| 
      
     | 
    
    
      
        
          
      
      
      
        
          
          
   13 #ifndef HWLOC_HELPER_H 
   14 #define HWLOC_HELPER_H 
   17 #error Please include the main hwloc.h instead 
  128                                       int depth,  unsigned idx) __hwloc_attribute_pure;  
  131                                       int depth,  unsigned idx)  
  181 static __hwloc_inline  unsigned 
  183                                          int depth) __hwloc_attribute_pure;  
  184 static __hwloc_inline  unsigned 
  212 static __hwloc_inline  int 
  215 static __hwloc_inline  int 
  240 static __hwloc_inline  int 
  243 static __hwloc_inline  int 
  386     ancestor = ancestor-> parent;  
  403   while (ancestor && ancestor-> type !=  type)  
  404     ancestor = ancestor-> parent;  
  419   while (obj1 != obj2) {  
  424     if (obj1 != obj2 && obj1-> depth == obj2-> depth) {  
  437 static __hwloc_inline  int 
  439 static __hwloc_inline  int 
  471   if (!obj && state == 0) {  
  475   if (!obj && state == 1) {  
  479   if (!obj && state == 2) {  
  593 static __hwloc_inline  int 
  636     current = current-> parent;  
  657     current = current-> parent;  
  802   for(i=0; i<nr; i++) {  
  850 static __hwloc_inline  int 
  855               int until,  unsigned long flags)  
  859   unsigned given, givenweight;  
  868   for (i = 0; i < n_roots; i++)  
  871   for (i = 0, given = 0, givenweight = 0; i < n_roots; i++) {  
  872     unsigned chunk, weight;  
  883     chunk = (( (givenweight+weight) * n  + tot_weight-1) / tot_weight)  
  884           - ((  givenweight         * n  + tot_weight-1) / tot_weight);  
  885     if (!root-> arity || chunk <= 1 || root-> depth >= until) {  
  890         for (j=0; j < chunk; j++)  
  906     givenweight += weight;  
 1030 static __hwloc_inline  int 
 1054 static __hwloc_inline  int 
 1094   while (obj && !obj-> cpuset) {  
 1115                           unsigned domain,  unsigned bus,  unsigned dev,  unsigned func)  
 1134   unsigned domain = 0;   
 1135   unsigned bus, dev, func;  
 1137   if (sscanf(busid,  "%x:%x.%x", &bus, &dev, &func) != 3  
 1138       && sscanf(busid,  "%x:%x:%x.%x", &domain, &bus, &dev, &func) != 4) {  
 1168 static __hwloc_inline  int 
 1170                            unsigned domain,  unsigned bus)  
  
enum hwloc_obj_cache_type_e hwloc_obj_cache_type_t Cache type.  
static hwloc_obj_t hwloc_get_next_obj_inside_cpuset_by_type(hwloc_topology_t topology, hwloc_const_cpuset_t set, hwloc_obj_type_t type, hwloc_obj_t prev) Return the next object of type type included in CPU set set. Definition: helper.h:109  
hwloc_obj_type_t type Type of object. Definition: hwloc.h:397  
unsigned char bus Definition: hwloc.h:638  
static hwloc_obj_t hwloc_get_common_ancestor_obj(hwloc_topology_t topology, hwloc_obj_t obj1, hwloc_obj_t obj2) Returns the common parent object to objects obj1 and obj2. Definition: helper.h:412  
struct hwloc_obj_attr_u::hwloc_pcidev_attr_s pcidev  
struct hwloc_obj * memory_first_child First Memory child. NUMA nodes and Memory-side caches are listed here (memory_arity and memory_first_... Definition: hwloc.h:474  
int hwloc_obj_type_is_icache(hwloc_obj_type_t type) Check whether an object type is a CPU Instruction Cache,.  
static hwloc_obj_t hwloc_get_pu_obj_by_os_index(hwloc_topology_t topology, unsigned os_index) Returns the object of type HWLOC_OBJ_PU with os_index. Definition: helper.h:705  
int depth Vertical index in the hierarchy. Definition: hwloc.h:418  
@ HWLOC_OBJ_PCI_DEVICE PCI device (filtered out by default). Definition: hwloc.h:269  
static hwloc_obj_t hwloc_get_pcidev_by_busid(hwloc_topology_t topology, unsigned domain, unsigned bus, unsigned dev, unsigned func) Find the PCI device object matching the PCI bus id given domain, bus device and function PCI bus id. Definition: helper.h:1114  
@ HWLOC_OBJ_OS_DEVICE Operating system device (filtered out by default). Definition: hwloc.h:279  
int hwloc_get_largest_objs_inside_cpuset(hwloc_topology_t topology, hwloc_const_cpuset_t set, hwloc_obj_t *restrict objs, int max) Get the set of largest objects covering exactly a given cpuset set.  
hwloc_cpuset_t cpuset CPUs covered by this object. Definition: hwloc.h:511  
int hwloc_obj_type_is_io(hwloc_obj_type_t type) Check whether an object type is I/O.  
struct hwloc_obj ** children Normal children, children[0 .. arity -1]. Definition: hwloc.h:455  
struct hwloc_obj * next_sibling Next object below the same parent (inside the same list of children). Definition: hwloc.h:447  
static hwloc_obj_t hwloc_get_pcidev_by_busidstring(hwloc_topology_t topology, const char *busid) Find the PCI device object matching the PCI bus id given as a string xxxx:yy:zz.t or yy:zz.... Definition: helper.h:1132  
struct hwloc_obj * io_first_child First I/O child. Bridges, PCI and OS devices are listed here (io_arity and io_first_child) instead of... Definition: hwloc.h:492  
struct hwloc_topology * hwloc_topology_t Topology context. Definition: hwloc.h:691  
unsigned hwloc_get_closest_objs(hwloc_topology_t topology, hwloc_obj_t src, hwloc_obj_t *restrict objs, unsigned max) Do a depth-first traversal of the topology to find and sort.  
static hwloc_obj_t hwloc_get_numanode_obj_by_os_index(hwloc_topology_t topology, unsigned os_index) Returns the object of type HWLOC_OBJ_NUMANODE with os_index. Definition: helper.h:726  
hwloc_const_nodeset_t hwloc_topology_get_complete_nodeset(hwloc_topology_t topology) Get complete node set.  
hwloc_const_bitmap_t hwloc_const_nodeset_t A non-modifiable hwloc_nodeset_t. Definition: hwloc.h:160  
static int hwloc_distrib(hwloc_topology_t topology, hwloc_obj_t *roots, unsigned n_roots, hwloc_cpuset_t *set, unsigned n, int until, unsigned long flags) Distribute n items over the topology under roots. Definition: helper.h:851  
int hwloc_bitmap_isequal(hwloc_const_bitmap_t bitmap1, hwloc_const_bitmap_t bitmap2) Test whether bitmap bitmap1 is equal to bitmap bitmap2.  
unsigned char dev Definition: hwloc.h:638  
static hwloc_obj_t hwloc_get_next_pcidev(hwloc_topology_t topology, hwloc_obj_t prev) Get the next PCI device in the system. Definition: helper.h:1105  
static int hwloc_bridge_covers_pcibus(hwloc_obj_t bridge, unsigned domain, unsigned bus) Definition: helper.h:1169  
static unsigned hwloc_get_nbobjs_inside_cpuset_by_depth(hwloc_topology_t topology, hwloc_const_cpuset_t set, int depth) Return the number of objects at depth depth included in CPU set set. Definition: helper.h:185  
unsigned short domain Definition: hwloc.h:634  
int hwloc_obj_type_is_dcache(hwloc_obj_type_t type) Check whether an object type is a CPU Data or Unified Cache.  
static hwloc_obj_t hwloc_get_first_largest_obj_inside_cpuset(hwloc_topology_t topology, hwloc_const_cpuset_t set) Get the first largest object included in the given cpuset set. Definition: helper.h:42  
unsigned char func Definition: hwloc.h:638  
static int hwloc_get_cache_type_depth(hwloc_topology_t topology, unsigned cachelevel, hwloc_obj_cache_type_t cachetype) Find the depth of cache objects matching cache level and type. Definition: helper.h:594  
int hwloc_get_type_depth(hwloc_topology_t topology, hwloc_obj_type_t type) Returns the depth of objects of type type.  
static hwloc_obj_t hwloc_get_obj_below_array_by_type(hwloc_topology_t topology, int nr, hwloc_obj_type_t *typev, unsigned *idxv) Find an object below a chain of objects specified by types and indexes. Definition: helper.h:798  
struct hwloc_obj * first_child First normal child. Definition: hwloc.h:456  
int hwloc_bitmap_iszero(hwloc_const_bitmap_t bitmap) Test whether bitmap bitmap is empty.  
static hwloc_obj_t hwloc_get_next_osdev(hwloc_topology_t topology, hwloc_obj_t prev) Get the next OS device in the system. Definition: helper.h:1151  
hwloc_const_nodeset_t hwloc_topology_get_allowed_nodeset(hwloc_topology_t topology) Get allowed node set.  
hwloc_bitmap_t hwloc_cpuset_t A CPU set is a bitmap whose bits are set according to CPU physical OS indexes. Definition: hwloc.h:140  
@ HWLOC_OBJ_PU Processing Unit, or (Logical) Processor. An execution unit (may share a core with some other logical ... Definition: hwloc.h:201  
int hwloc_bitmap_or(hwloc_bitmap_t res, hwloc_const_bitmap_t bitmap1, hwloc_const_bitmap_t bitmap2) Or bitmaps bitmap1 and bitmap2 and store the result in bitmap res.  
static hwloc_obj_t hwloc_get_child_covering_cpuset(hwloc_topology_t topology, hwloc_const_cpuset_t set, hwloc_obj_t parent) Get the child covering at least CPU set set. Definition: helper.h:275  
hwloc_obj_cache_type_t type Cache type. Definition: hwloc.h:621  
hwloc_bitmap_t hwloc_nodeset_t A node set is a bitmap whose bits are set according to NUMA memory node physical OS indexes. Definition: hwloc.h:157  
hwloc_obj_t hwloc_get_obj_by_depth(hwloc_topology_t topology, int depth, unsigned idx) Returns the topology object at logical index idx from depth depth.  
static hwloc_obj_t hwloc_get_next_obj_by_type(hwloc_topology_t topology, hwloc_obj_type_t type, hwloc_obj_t prev) Returns the next object of type type.  
void hwloc_bitmap_zero(hwloc_bitmap_t bitmap) Empty the bitmap bitmap.  
int hwloc_bitmap_singlify_per_core(hwloc_topology_t topology, hwloc_bitmap_t cpuset, unsigned which) Remove simultaneous multithreading PUs from a CPU set.  
unsigned depth Depth of cache (e.g., L1, L2, ...etc.) Definition: hwloc.h:617  
hwloc_const_nodeset_t hwloc_topology_get_topology_nodeset(hwloc_topology_t topology) Get topology node set.  
hwloc_obj_bridge_type_t downstream_type Definition: hwloc.h:660  
union hwloc_obj_attr_u * attr Object type-specific Attributes, may be NULL if no attribute value was found. Definition: hwloc.h:414  
@ HWLOC_DISTRIB_FLAG_REVERSE Distrib in reverse order, starting from the last objects. Definition: helper.h:824  
static int hwloc_obj_is_in_subtree(hwloc_topology_t topology, hwloc_obj_t obj, hwloc_obj_t subtree_root) Returns true if obj is inside the subtree beginning with ancestor object subtree_root. Definition: helper.h:440  
@ HWLOC_OBJ_NUMANODE NUMA node. An object that contains memory that is directly and byte-accessible to the host processors... Definition: hwloc.h:236  
struct hwloc_obj_attr_u::hwloc_bridge_attr_s bridge  
int hwloc_bitmap_isincluded(hwloc_const_bitmap_t sub_bitmap, hwloc_const_bitmap_t super_bitmap) Test whether bitmap sub_bitmap is part of bitmap super_bitmap.  
@ HWLOC_TYPE_DEPTH_MULTIPLE Objects of given type exist at different depth in the topology (only for Groups). Definition: hwloc.h:822  
static hwloc_obj_t hwloc_get_next_obj_by_depth(hwloc_topology_t topology, int depth, hwloc_obj_t prev) Returns the next object at depth depth.  
static hwloc_obj_t hwloc_get_next_bridge(hwloc_topology_t topology, hwloc_obj_t prev) Get the next bridge in the system. Definition: helper.h:1161  
static hwloc_obj_t hwloc_get_ancestor_obj_by_depth(hwloc_topology_t topology, int depth, hwloc_obj_t obj) Returns the ancestor object of obj at depth depth. Definition: helper.h:380  
static hwloc_obj_t hwloc_get_obj_inside_cpuset_by_type(hwloc_topology_t topology, hwloc_const_cpuset_t set, hwloc_obj_type_t type, unsigned idx) Return the idx -th object of type type included in CPU set set. Definition: helper.h:164  
static hwloc_obj_t hwloc_get_cache_covering_cpuset(hwloc_topology_t topology, hwloc_const_cpuset_t set) Get the first data (or unified) cache covering a cpuset set. Definition: helper.h:630  
@ HWLOC_TYPE_DEPTH_UNKNOWN No object of given type exists in the topology. Definition: hwloc.h:821  
hwloc_bitmap_t hwloc_bitmap_dup(hwloc_const_bitmap_t bitmap) Duplicate bitmap bitmap by allocating a new bitmap and copying bitmap contents.  
int hwloc_obj_type_is_normal(hwloc_obj_type_t type) Check whether an object type is Normal.  
static int hwloc_get_obj_index_inside_cpuset(hwloc_topology_t topology, hwloc_const_cpuset_t set, hwloc_obj_t obj) Return the logical index among the objects included in CPU set set. Definition: helper.h:244  
@ HWLOC_OBJ_BRIDGE_PCI PCI-side of a bridge. Definition: hwloc.h:335  
static hwloc_obj_t hwloc_get_next_obj_covering_cpuset_by_type(hwloc_topology_t topology, hwloc_const_cpuset_t set, hwloc_obj_type_t type, hwloc_obj_t prev) Iterate through same-type objects covering at least CPU set set. Definition: helper.h:348  
static hwloc_obj_t hwloc_get_ancestor_obj_by_type(hwloc_topology_t topology, hwloc_obj_type_t type, hwloc_obj_t obj) Returns the ancestor object of obj with type type. Definition: helper.h:400  
struct hwloc_obj_attr_u::hwloc_cache_attr_s cache  
hwloc_obj_type_t Type of topology object. Definition: hwloc.h:176  
struct hwloc_obj * next_cousin Next object of same type and depth. Definition: hwloc.h:441  
@ HWLOC_OBJ_CACHE_UNIFIED Unified cache. Definition: hwloc.h:327  
static hwloc_obj_t hwloc_get_root_obj(hwloc_topology_t topology) Returns the top-object of the topology-tree.  
int hwloc_bitmap_intersects(hwloc_const_bitmap_t bitmap1, hwloc_const_bitmap_t bitmap2) Test whether bitmaps bitmap1 and bitmap2 intersects.  
struct hwloc_obj * misc_first_child First Misc child. Misc objects are listed here (misc_arity and misc_first_child) instead of in the no... Definition: hwloc.h:504  
hwloc_nodeset_t nodeset NUMA nodes covered by this object or containing this object. Definition: hwloc.h:539  
@ HWLOC_OBJ_BRIDGE Bridge (filtered out by default). Any bridge (or PCI switch) that connects the host or an I/O bus,... Definition: hwloc.h:257  
static int hwloc_get_nbobjs_inside_cpuset_by_type(hwloc_topology_t topology, hwloc_const_cpuset_t set, hwloc_obj_type_t type) Return the number of objects of type type included in CPU set set. Definition: helper.h:216  
static hwloc_obj_t hwloc_get_next_obj_inside_cpuset_by_depth(hwloc_topology_t topology, hwloc_const_cpuset_t set, int depth, hwloc_obj_t prev) Return the next object at depth depth included in CPU set set. Definition: helper.h:85  
struct hwloc_obj * parent Parent, NULL if root (Machine object) Definition: hwloc.h:445  
hwloc_const_cpuset_t hwloc_topology_get_complete_cpuset(hwloc_topology_t topology) Get complete CPU set.  
struct hwloc_pcidev_attr_s pci Definition: hwloc.h:647  
static hwloc_obj_t hwloc_get_next_obj_covering_cpuset_by_depth(hwloc_topology_t topology, hwloc_const_cpuset_t set, int depth, hwloc_obj_t prev) Iterate through same-depth objects covering at least CPU set set. Definition: helper.h:321  
static hwloc_obj_t hwloc_get_next_child(hwloc_topology_t topology, hwloc_obj_t parent, hwloc_obj_t prev) Return the next child. Definition: helper.h:456  
union hwloc_obj_attr_u::hwloc_bridge_attr_s::@1 downstream  
static hwloc_obj_t hwloc_get_non_io_ancestor_obj(hwloc_topology_t topology, hwloc_obj_t ioobj) Get the first non-I/O ancestor object. Definition: helper.h:1090  
static hwloc_obj_t hwloc_get_obj_inside_cpuset_by_depth(hwloc_topology_t topology, hwloc_const_cpuset_t set, int depth, unsigned idx) Return the (logically) idx -th object at depth depth included in CPU set set. Definition: helper.h:130  
static int hwloc_cpuset_from_nodeset(hwloc_topology_t topology, hwloc_cpuset_t _cpuset, hwloc_const_nodeset_t nodeset) Convert a NUMA node set into a CPU set. Definition: helper.h:1055  
@ HWLOC_OBJ_MISC Miscellaneous objects (filtered out by default). Objects without particular meaning,... Definition: hwloc.h:290  
Structure of a topology object. Definition: hwloc.h:395  
hwloc_const_cpuset_t hwloc_topology_get_allowed_cpuset(hwloc_topology_t topology) Get allowed CPU set.  
hwloc_const_cpuset_t hwloc_topology_get_topology_cpuset(hwloc_topology_t topology) Get topology CPU set.  
int hwloc_bitmap_isset(hwloc_const_bitmap_t bitmap, unsigned id) Test whether index id is part of bitmap bitmap.  
unsigned arity Number of normal children. Memory, Misc and I/O children are not listed here but rather in their dedi... Definition: hwloc.h:451  
hwloc_distrib_flags_e Flags to be given to hwloc_distrib(). Definition: helper.h:820  
int hwloc_bitmap_weight(hwloc_const_bitmap_t bitmap) Compute the "weight" of bitmap bitmap (i.e., number of indexes that are in the bitmap).  
int hwloc_obj_type_is_cache(hwloc_obj_type_t type) Check whether an object type is a CPU Cache (Data, Unified or Instruction).  
static int hwloc_cpuset_to_nodeset(hwloc_topology_t topology, hwloc_const_cpuset_t _cpuset, hwloc_nodeset_t nodeset) Convert a CPU set into a NUMA node set. Definition: helper.h:1031  
static hwloc_obj_t hwloc_get_obj_by_type(hwloc_topology_t topology, hwloc_obj_type_t type, unsigned idx) Returns the topology object at logical index idx with type type.  
struct hwloc_obj * prev_cousin Previous object of same type and depth. Definition: hwloc.h:442  
static hwloc_obj_t hwloc_get_shared_cache_covering_obj(hwloc_topology_t topology, hwloc_obj_t obj) Get the first data (or unified) cache shared between an object and somebody else. Definition: helper.h:648  
static hwloc_obj_t hwloc_get_obj_covering_cpuset(hwloc_topology_t topology, hwloc_const_cpuset_t set) Get the lowest object covering at least CPU set set. Definition: helper.h:297  
int hwloc_bitmap_set(hwloc_bitmap_t bitmap, unsigned id) Add index id in bitmap bitmap.  
unsigned os_index OS-provided physical index number. It is not guaranteed unique across the entire machine,... Definition: hwloc.h:400  
hwloc_const_bitmap_t hwloc_const_cpuset_t A non-modifiable hwloc_cpuset_t. Definition: hwloc.h:142  
static hwloc_obj_t hwloc_get_obj_below_by_type(hwloc_topology_t topology, hwloc_obj_type_t type1, unsigned idx1, hwloc_obj_type_t type2, unsigned idx2) Find an object below another object, both specified by types and indexes. Definition: helper.h:766  
struct hwloc_bitmap_s * hwloc_bitmap_t Set of bits represented as an opaque pointer to an internal bitmap. Definition: bitmap.h:68  
int hwloc_obj_type_is_memory(hwloc_obj_type_t type) Check whether an object type is Memory.  
	  
	   | 
         
       
           | 
        
        
     |