10#ifndef NUMAPP_NODEMASK_HPP_
11#define NUMAPP_NODEMASK_HPP_
12#include <system_error>
44 return MakeFromString(nodestring, numa_parse_nodestring);
59 return MakeFromString(nodestring, numa_parse_nodestring_all);
62 using ParseFunc =
struct bitmask *(*)(
const char *);
63 [[nodiscard]]
static Nodemask MakeFromString(
char const* nodestring, ParseFunc func) {
65 auto* mask_ptr = func(nodestring);
66 if (mask_ptr ==
nullptr) {
67 throw std::system_error(std::make_error_code(std::errc::invalid_argument),
68 "Could not parse nodestring");
69 }
else if (mask_ptr == numa_no_nodes_ptr) {
78 friend class Bitmask<Nodemask>;
80 return NumaBitmaskPtr(numa_allocate_nodemask(), &numa_free_nodemask);
96inline 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.