Le 17/07/2010 11:47, Samuel Thibault a écrit : > bgog...@osl.iu.edu, le Sat 17 Jul 2010 05:05:46 -0400, a écrit : > >> +/** \brief Bind current process memory on memory nodes near the given >> cpuset \p set >> + * >> + * \return ENOSYS if the action is not supported >> + * \return EXDEV if the binding cannot be enforced >> + */ >> +HWLOC_DECLSPEC int hwloc_set_membind(hwloc_topology_t topology, >> hwloc_const_cpuset_t set, int policy); >> + >> +/** \brief Get current process memory binding >> + */ >> +HWLOC_DECLSPEC int hwloc_get_membind(hwloc_topology_t topology, >> hwloc_cpuset_t set, int * policy); >> + >> + >> > Mmm, I wouldn't have thought of providing the places by giving a cpuset. > Why not using nodesets? >
If we really start using nodesets intensively, we shouldn't use hwloc_cpuset_t for their type, it's confusing. Maybe #define hwloc_nodeset_t hwloc_cpuset_t and add a big comment saying that nodesets may be manipulated with cpuset functions? Not very satisfying but better than duplicating the whole API for nodesets? Or replace hwloc_cpuset_t with hwloc_set_t everywhere and add many #define in hwloc/cpuset.h for backward API compatibility? Then, we'd need some conversion routines such as hwloc_cpuset_from/to_nodeset(topology, cpuset, nodeset). And a big comment saying that we don't duplicate all helpers from nodesets and that people should convert to cpusets before using helpers. Brice