8#ifndef NUMAPP_NODEMASK_HPP_
9#define NUMAPP_NODEMASK_HPP_
10#include <system_error>
42 return MakeFromString(nodestring, numa_parse_nodestring);
57 return MakeFromString(nodestring, numa_parse_nodestring_all);
60 using ParseFunc =
struct bitmask *(*)(
const char *);
61 [[nodiscard]]
static Nodemask MakeFromString(
char const* nodestring, ParseFunc func) {
63 auto* mask_ptr = func(nodestring);
64 if (mask_ptr ==
nullptr) {
65 throw std::system_error(std::make_error_code(std::errc::invalid_argument),
66 "Could not parse nodestring");
67 }
else if (mask_ptr == numa_no_nodes_ptr) {
76 friend class Bitmask<Nodemask>;
78 return NumaBitmaskPtr(numa_allocate_nodemask(), &numa_free_nodemask);
94inline std::ostream& operator<<(std::ostream& os,
Nodemask const& mask) {
Contains declarations for numapp::Bitmask.
std::unique_ptr< struct bitmask, void(*)(struct bitmask *)> NumaBitmaskPtr
Lowlevel bitmask type.
std::ostream & FormatBitmask(std::ostream &os, bitmask const *mask, int min_bits)
Formats mask and inserts it to os.
Type-safe NUMA node mask.
static Nodemask MakeFromNodestringAll(char const *nodestring)
Construct Nodemask from nodestring that considers does not consider current cpuset.
static Nodemask MakeFromNodestring(char const *nodestring)
Construct Nodemask from nodestring that considers current cpuset.