Hardware Locality (hwloc): Interoperability with Linux libnuma unsigned long masks

Hardware Locality (hwloc) 2.14.0rc1

Functions
Interoperability with Linux libnuma unsigned long masks

## Functions
int | hwloc_cpuset_to_linux_libnuma_ulongs (hwloc_topology_t topology, hwloc_const_cpuset_t cpuset, unsigned long *mask, unsigned long *maxnode)
int | hwloc_nodeset_to_linux_libnuma_ulongs (hwloc_topology_t topology, hwloc_const_nodeset_t nodeset, unsigned long *mask, unsigned long *maxnode)
int | hwloc_cpuset_from_linux_libnuma_ulongs (hwloc_topology_t topology, hwloc_cpuset_t cpuset, const unsigned long *mask, unsigned long maxnode)
int | hwloc_nodeset_from_linux_libnuma_ulongs (hwloc_topology_t topology, hwloc_nodeset_t nodeset, const unsigned long *mask, unsigned long maxnode)

## Detailed Description

This interface helps converting between Linux libnuma unsigned long masks and hwloc cpusets and nodesets.

Note
  Topology `topology` must match the current machine.
  The behavior of libnuma is undefined if the kernel is not NUMA-aware. (when CONFIG_NUMA is not set in the kernel configuration). This helper and libnuma may thus not be strictly compatible in this case, which may be detected by checking whether numa_available() returns -1.

## Function Documentation

## ◆ hwloc_cpuset_from_linux_libnuma_ulongs()

int hwloc_cpuset_from_linux_libnuma_ulongs | ( | hwloc_topology_t | topology,
|  | hwloc_cpuset_t | cpuset,
|  | const unsigned long * | mask,
|  | unsigned long | maxnode )
| inline

Convert the array of unsigned long `mask` into hwloc CPU set.

`mask` is a array of unsigned long that will be read. `maxnode` contains the maximal node number that may be read in `mask`.

This function may be used after calling get_mempolicy or any other function that takes an array of unsigned long as output parameter (and possibly a maximal node number as input parameter).

Returns
  0 on success.
  -1 on error, for instance if failing an internal reallocation.

## ◆ hwloc_cpuset_to_linux_libnuma_ulongs()

int hwloc_cpuset_to_linux_libnuma_ulongs | ( | hwloc_topology_t | topology,
|  | hwloc_const_cpuset_t | cpuset,
|  | unsigned long * | mask,
|  | unsigned long * | maxnode )
| inline

Convert hwloc CPU set `cpuset` into the array of unsigned long `mask`.

`mask` is the array of unsigned long that will be filled. `maxnode` contains the maximal node number that may be stored in `mask`. `maxnode` will be set to the maximal node number that was found, plus one.

This function may be used before calling set_mempolicy, mbind, migrate_pages or any other function that takes an array of unsigned long and a maximal node number as input parameter.

Returns
  0.

Note
  On heterogeneous memory platforms, we may return multiple local NUMA nodes even if libnuma reports only one (usually the first one).

## ◆ hwloc_nodeset_from_linux_libnuma_ulongs()

int hwloc_nodeset_from_linux_libnuma_ulongs | ( | hwloc_topology_t | topology,
|  | hwloc_nodeset_t | nodeset,
|  | const unsigned long * | mask,
|  | unsigned long | maxnode )
| inline

Convert the array of unsigned long `mask` into hwloc NUMA node set.

`mask` is a array of unsigned long that will be read. `maxnode` contains the maximal node number that may be read in `mask`.

This function may be used after calling get_mempolicy or any other function that takes an array of unsigned long as output parameter (and possibly a maximal node number as input parameter).

Returns
  0 on success.
  -1 with errno set to `ENOMEM` if some internal reallocation failed.

## ◆ hwloc_nodeset_to_linux_libnuma_ulongs()

int hwloc_nodeset_to_linux_libnuma_ulongs | ( | hwloc_topology_t | topology,
|  | hwloc_const_nodeset_t | nodeset,
|  | unsigned long * | mask,
|  | unsigned long * | maxnode )
| inline

Convert hwloc NUMA node set `nodeset` into the array of unsigned long `mask`.

`mask` is the array of unsigned long that will be filled. `maxnode` contains the maximal node number that may be stored in `mask`. `maxnode` will be set to the maximal node number that was found, plus one.

This function may be used before calling set_mempolicy, mbind, migrate_pages or any other function that takes an array of unsigned long and a maximal node number as input parameter.

Returns
  0.