00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00053 #ifndef HWLOC_H
00054 #define HWLOC_H
00055
00056 #include "hwloc/autogen/config.h"
00057
00058 #include <sys/types.h>
00059 #include <stdio.h>
00060 #include <string.h>
00061 #include <limits.h>
00062
00063
00064
00065
00066 #include "hwloc/rename.h"
00067
00068
00069
00070
00071
00072 #include "hwloc/bitmap.h"
00073
00074
00075 #ifdef __cplusplus
00076 extern "C" {
00077 #endif
00078
00079
00096 #define HWLOC_API_VERSION 0x00020100
00097
00102 HWLOC_DECLSPEC unsigned hwloc_get_api_version(void);
00103
00105 #define HWLOC_COMPONENT_ABI 6
00106
00140 typedef hwloc_bitmap_t hwloc_cpuset_t;
00142 typedef hwloc_const_bitmap_t hwloc_const_cpuset_t;
00143
00157 typedef hwloc_bitmap_t hwloc_nodeset_t;
00160 typedef hwloc_const_bitmap_t hwloc_const_nodeset_t;
00161
00176 typedef enum {
00177
00179 #define HWLOC_OBJ_TYPE_MIN HWLOC_OBJ_MACHINE
00180
00182 HWLOC_OBJ_MACHINE,
00191 HWLOC_OBJ_PACKAGE,
00197 HWLOC_OBJ_CORE,
00201 HWLOC_OBJ_PU,
00213 HWLOC_OBJ_L1CACHE,
00214 HWLOC_OBJ_L2CACHE,
00215 HWLOC_OBJ_L3CACHE,
00216 HWLOC_OBJ_L4CACHE,
00217 HWLOC_OBJ_L5CACHE,
00219 HWLOC_OBJ_L1ICACHE,
00220 HWLOC_OBJ_L2ICACHE,
00221 HWLOC_OBJ_L3ICACHE,
00223 HWLOC_OBJ_GROUP,
00236 HWLOC_OBJ_NUMANODE,
00257 HWLOC_OBJ_BRIDGE,
00266 HWLOC_OBJ_PCI_DEVICE,
00273 HWLOC_OBJ_OS_DEVICE,
00281 HWLOC_OBJ_MISC,
00292 HWLOC_OBJ_MEMCACHE,
00305 HWLOC_OBJ_DIE,
00310 HWLOC_OBJ_TYPE_MAX
00311 } hwloc_obj_type_t;
00312
00314 typedef enum hwloc_obj_cache_type_e {
00315 HWLOC_OBJ_CACHE_UNIFIED,
00316 HWLOC_OBJ_CACHE_DATA,
00317 HWLOC_OBJ_CACHE_INSTRUCTION
00318 } hwloc_obj_cache_type_t;
00319
00321 typedef enum hwloc_obj_bridge_type_e {
00322 HWLOC_OBJ_BRIDGE_HOST,
00323 HWLOC_OBJ_BRIDGE_PCI
00324 } hwloc_obj_bridge_type_t;
00325
00327 typedef enum hwloc_obj_osdev_type_e {
00328 HWLOC_OBJ_OSDEV_BLOCK,
00330 HWLOC_OBJ_OSDEV_GPU,
00333 HWLOC_OBJ_OSDEV_NETWORK,
00335 HWLOC_OBJ_OSDEV_OPENFABRICS,
00338 HWLOC_OBJ_OSDEV_DMA,
00340 HWLOC_OBJ_OSDEV_COPROC
00344 } hwloc_obj_osdev_type_t;
00345
00365 HWLOC_DECLSPEC int hwloc_compare_types (hwloc_obj_type_t type1, hwloc_obj_type_t type2) __hwloc_attribute_const;
00366
00368 #define HWLOC_TYPE_UNORDERED INT_MAX
00369
00378 union hwloc_obj_attr_u;
00379
00384 struct hwloc_obj {
00385
00386 hwloc_obj_type_t type;
00387 char *subtype;
00389 unsigned os_index;
00394 #define HWLOC_UNKNOWN_INDEX (unsigned)-1
00395
00396 char *name;
00401 hwloc_uint64_t total_memory;
00403 union hwloc_obj_attr_u *attr;
00406
00407 int depth;
00422 unsigned logical_index;
00429
00430 struct hwloc_obj *next_cousin;
00431 struct hwloc_obj *prev_cousin;
00433
00434 struct hwloc_obj *parent;
00435 unsigned sibling_rank;
00436 struct hwloc_obj *next_sibling;
00437 struct hwloc_obj *prev_sibling;
00440 unsigned arity;
00444 struct hwloc_obj **children;
00445 struct hwloc_obj *first_child;
00446 struct hwloc_obj *last_child;
00449 int symmetric_subtree;
00460 unsigned memory_arity;
00463 struct hwloc_obj *memory_first_child;
00478 unsigned io_arity;
00481 struct hwloc_obj *io_first_child;
00490 unsigned misc_arity;
00493 struct hwloc_obj *misc_first_child;
00499
00500 hwloc_cpuset_t cpuset;
00515 hwloc_cpuset_t complete_cpuset;
00528 hwloc_nodeset_t nodeset;
00548 hwloc_nodeset_t complete_nodeset;
00564 struct hwloc_info_s *infos;
00565 unsigned infos_count;
00567
00568 void *userdata;
00573 hwloc_uint64_t gp_index;
00578 };
00582 typedef struct hwloc_obj * hwloc_obj_t;
00583
00585 union hwloc_obj_attr_u {
00587 struct hwloc_numanode_attr_s {
00588 hwloc_uint64_t local_memory;
00589 unsigned page_types_len;
00595 struct hwloc_memory_page_type_s {
00596 hwloc_uint64_t size;
00597 hwloc_uint64_t count;
00598 } * page_types;
00599 } numanode;
00600
00602 struct hwloc_cache_attr_s {
00603 hwloc_uint64_t size;
00604 unsigned depth;
00605 unsigned linesize;
00606 int associativity;
00608 hwloc_obj_cache_type_t type;
00609 } cache;
00611 struct hwloc_group_attr_s {
00612 unsigned depth;
00614 unsigned kind;
00615 unsigned subkind;
00616 unsigned char dont_merge;
00617 } group;
00619 struct hwloc_pcidev_attr_s {
00620 #ifndef HWLOC_HAVE_32BITS_PCI_DOMAIN
00621 unsigned short domain;
00622 #else
00623 unsigned int domain;
00624 #endif
00625 unsigned char bus, dev, func;
00626 unsigned short class_id;
00627 unsigned short vendor_id, device_id, subvendor_id, subdevice_id;
00628 unsigned char revision;
00629 float linkspeed;
00630 } pcidev;
00632 struct hwloc_bridge_attr_s {
00633 union {
00634 struct hwloc_pcidev_attr_s pci;
00635 } upstream;
00636 hwloc_obj_bridge_type_t upstream_type;
00637 union {
00638 struct {
00639 #ifndef HWLOC_HAVE_32BITS_PCI_DOMAIN
00640 unsigned short domain;
00641 #else
00642 unsigned int domain;
00643 #endif
00644 unsigned char secondary_bus, subordinate_bus;
00645 } pci;
00646 } downstream;
00647 hwloc_obj_bridge_type_t downstream_type;
00648 unsigned depth;
00649 } bridge;
00651 struct hwloc_osdev_attr_s {
00652 hwloc_obj_osdev_type_t type;
00653 } osdev;
00654 };
00655
00660 struct hwloc_info_s {
00661 char *name;
00662 char *value;
00663 };
00664
00673 struct hwloc_topology;
00678 typedef struct hwloc_topology * hwloc_topology_t;
00679
00686 HWLOC_DECLSPEC int hwloc_topology_init (hwloc_topology_t *topologyp);
00687
00708 HWLOC_DECLSPEC int hwloc_topology_load(hwloc_topology_t topology);
00709
00714 HWLOC_DECLSPEC void hwloc_topology_destroy (hwloc_topology_t topology);
00715
00726 HWLOC_DECLSPEC int hwloc_topology_dup(hwloc_topology_t *newtopology, hwloc_topology_t oldtopology);
00727
00745 HWLOC_DECLSPEC int hwloc_topology_abi_check(hwloc_topology_t topology);
00746
00758 HWLOC_DECLSPEC void hwloc_topology_check(hwloc_topology_t topology);
00759
00780 HWLOC_DECLSPEC int hwloc_topology_get_depth(hwloc_topology_t __hwloc_restrict topology) __hwloc_attribute_pure;
00781
00805 HWLOC_DECLSPEC int hwloc_get_type_depth (hwloc_topology_t topology, hwloc_obj_type_t type);
00806
00807 enum hwloc_get_type_depth_e {
00808 HWLOC_TYPE_DEPTH_UNKNOWN = -1,
00809 HWLOC_TYPE_DEPTH_MULTIPLE = -2,
00810 HWLOC_TYPE_DEPTH_NUMANODE = -3,
00811 HWLOC_TYPE_DEPTH_BRIDGE = -4,
00812 HWLOC_TYPE_DEPTH_PCI_DEVICE = -5,
00813 HWLOC_TYPE_DEPTH_OS_DEVICE = -6,
00814 HWLOC_TYPE_DEPTH_MISC = -7,
00815 HWLOC_TYPE_DEPTH_MEMCACHE = -8
00816 };
00817
00837 HWLOC_DECLSPEC int hwloc_get_memory_parents_depth (hwloc_topology_t topology);
00838
00852 static __hwloc_inline int
00853 hwloc_get_type_or_below_depth (hwloc_topology_t topology, hwloc_obj_type_t type) __hwloc_attribute_pure;
00854
00868 static __hwloc_inline int
00869 hwloc_get_type_or_above_depth (hwloc_topology_t topology, hwloc_obj_type_t type) __hwloc_attribute_pure;
00870
00878 HWLOC_DECLSPEC hwloc_obj_type_t hwloc_get_depth_type (hwloc_topology_t topology, int depth) __hwloc_attribute_pure;
00879
00882 HWLOC_DECLSPEC unsigned hwloc_get_nbobjs_by_depth (hwloc_topology_t topology, int depth) __hwloc_attribute_pure;
00883
00889 static __hwloc_inline int
00890 hwloc_get_nbobjs_by_type (hwloc_topology_t topology, hwloc_obj_type_t type) __hwloc_attribute_pure;
00891
00896 static __hwloc_inline hwloc_obj_t
00897 hwloc_get_root_obj (hwloc_topology_t topology) __hwloc_attribute_pure;
00898
00900 HWLOC_DECLSPEC hwloc_obj_t hwloc_get_obj_by_depth (hwloc_topology_t topology, int depth, unsigned idx) __hwloc_attribute_pure;
00901
00908 static __hwloc_inline hwloc_obj_t
00909 hwloc_get_obj_by_type (hwloc_topology_t topology, hwloc_obj_type_t type, unsigned idx) __hwloc_attribute_pure;
00910
00915 static __hwloc_inline hwloc_obj_t
00916 hwloc_get_next_obj_by_depth (hwloc_topology_t topology, int depth, hwloc_obj_t prev);
00917
00924 static __hwloc_inline hwloc_obj_t
00925 hwloc_get_next_obj_by_type (hwloc_topology_t topology, hwloc_obj_type_t type,
00926 hwloc_obj_t prev);
00927
00944 HWLOC_DECLSPEC const char * hwloc_obj_type_string (hwloc_obj_type_t type) __hwloc_attribute_const;
00945
00963 HWLOC_DECLSPEC int hwloc_obj_type_snprintf(char * __hwloc_restrict string, size_t size,
00964 hwloc_obj_t obj,
00965 int verbose);
00966
00978 HWLOC_DECLSPEC int hwloc_obj_attr_snprintf(char * __hwloc_restrict string, size_t size,
00979 hwloc_obj_t obj, const char * __hwloc_restrict separator,
00980 int verbose);
00981
01005 HWLOC_DECLSPEC int hwloc_type_sscanf(const char *string,
01006 hwloc_obj_type_t *typep,
01007 union hwloc_obj_attr_u *attrp, size_t attrsize);
01008
01030 HWLOC_DECLSPEC int hwloc_type_sscanf_as_depth(const char *string,
01031 hwloc_obj_type_t *typep,
01032 hwloc_topology_t topology, int *depthp);
01033
01049 static __hwloc_inline const char *
01050 hwloc_obj_get_info_by_name(hwloc_obj_t obj, const char *name) __hwloc_attribute_pure;
01051
01068 HWLOC_DECLSPEC int hwloc_obj_add_info(hwloc_obj_t obj, const char *name, const char *value);
01069
01141 typedef enum {
01144 HWLOC_CPUBIND_PROCESS = (1<<0),
01145
01148 HWLOC_CPUBIND_THREAD = (1<<1),
01149
01173 HWLOC_CPUBIND_STRICT = (1<<2),
01174
01190 HWLOC_CPUBIND_NOMEMBIND = (1<<3)
01191 } hwloc_cpubind_flags_t;
01192
01198 HWLOC_DECLSPEC int hwloc_set_cpubind(hwloc_topology_t topology, hwloc_const_cpuset_t set, int flags);
01199
01205 HWLOC_DECLSPEC int hwloc_get_cpubind(hwloc_topology_t topology, hwloc_cpuset_t set, int flags);
01206
01218 HWLOC_DECLSPEC int hwloc_set_proc_cpubind(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_const_cpuset_t set, int flags);
01219
01231 HWLOC_DECLSPEC int hwloc_get_proc_cpubind(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_cpuset_t set, int flags);
01232
01233 #ifdef hwloc_thread_t
01234
01241 HWLOC_DECLSPEC int hwloc_set_thread_cpubind(hwloc_topology_t topology, hwloc_thread_t thread, hwloc_const_cpuset_t set, int flags);
01242 #endif
01243
01244 #ifdef hwloc_thread_t
01245
01252 HWLOC_DECLSPEC int hwloc_get_thread_cpubind(hwloc_topology_t topology, hwloc_thread_t thread, hwloc_cpuset_t set, int flags);
01253 #endif
01254
01268 HWLOC_DECLSPEC int hwloc_get_last_cpu_location(hwloc_topology_t topology, hwloc_cpuset_t set, int flags);
01269
01286 HWLOC_DECLSPEC int hwloc_get_proc_last_cpu_location(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_cpuset_t set, int flags);
01287
01367 typedef enum {
01375 HWLOC_MEMBIND_DEFAULT = 0,
01376
01386 HWLOC_MEMBIND_FIRSTTOUCH = 1,
01387
01390 HWLOC_MEMBIND_BIND = 2,
01391
01399 HWLOC_MEMBIND_INTERLEAVE = 3,
01400
01406 HWLOC_MEMBIND_NEXTTOUCH = 4,
01407
01414 HWLOC_MEMBIND_MIXED = -1
01415 } hwloc_membind_policy_t;
01416
01430 typedef enum {
01435 HWLOC_MEMBIND_PROCESS = (1<<0),
01436
01440 HWLOC_MEMBIND_THREAD = (1<<1),
01441
01448 HWLOC_MEMBIND_STRICT = (1<<2),
01449
01454 HWLOC_MEMBIND_MIGRATE = (1<<3),
01455
01467 HWLOC_MEMBIND_NOCPUBIND = (1<<4),
01468
01478 HWLOC_MEMBIND_BYNODESET = (1<<5)
01479 } hwloc_membind_flags_t;
01480
01496 HWLOC_DECLSPEC int hwloc_set_membind(hwloc_topology_t topology, hwloc_const_bitmap_t set, hwloc_membind_policy_t policy, int flags);
01497
01542 HWLOC_DECLSPEC int hwloc_get_membind(hwloc_topology_t topology, hwloc_bitmap_t set, hwloc_membind_policy_t * policy, int flags);
01543
01556 HWLOC_DECLSPEC int hwloc_set_proc_membind(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_const_bitmap_t set, hwloc_membind_policy_t policy, int flags);
01557
01597 HWLOC_DECLSPEC int hwloc_get_proc_membind(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_bitmap_t set, hwloc_membind_policy_t * policy, int flags);
01598
01609 HWLOC_DECLSPEC int hwloc_set_area_membind(hwloc_topology_t topology, const void *addr, size_t len, hwloc_const_bitmap_t set, hwloc_membind_policy_t policy, int flags);
01610
01638 HWLOC_DECLSPEC int hwloc_get_area_membind(hwloc_topology_t topology, const void *addr, size_t len, hwloc_bitmap_t set, hwloc_membind_policy_t * policy, int flags);
01639
01659 HWLOC_DECLSPEC int hwloc_get_area_memlocation(hwloc_topology_t topology, const void *addr, size_t len, hwloc_bitmap_t set, int flags);
01660
01668 HWLOC_DECLSPEC void *hwloc_alloc(hwloc_topology_t topology, size_t len);
01669
01684 HWLOC_DECLSPEC void *hwloc_alloc_membind(hwloc_topology_t topology, size_t len, hwloc_const_bitmap_t set, hwloc_membind_policy_t policy, int flags) __hwloc_attribute_malloc;
01685
01695 static __hwloc_inline void *
01696 hwloc_alloc_membind_policy(hwloc_topology_t topology, size_t len, hwloc_const_bitmap_t set, hwloc_membind_policy_t policy, int flags) __hwloc_attribute_malloc;
01697
01701 HWLOC_DECLSPEC int hwloc_free(hwloc_topology_t topology, void *addr, size_t len);
01702
01739 HWLOC_DECLSPEC int hwloc_topology_set_pid(hwloc_topology_t __hwloc_restrict topology, hwloc_pid_t pid);
01740
01769 HWLOC_DECLSPEC int hwloc_topology_set_synthetic(hwloc_topology_t __hwloc_restrict topology, const char * __hwloc_restrict description);
01770
01797 HWLOC_DECLSPEC int hwloc_topology_set_xml(hwloc_topology_t __hwloc_restrict topology, const char * __hwloc_restrict xmlpath);
01798
01825 HWLOC_DECLSPEC int hwloc_topology_set_xmlbuffer(hwloc_topology_t __hwloc_restrict topology, const char * __hwloc_restrict buffer, int size);
01826
01829 enum hwloc_topology_components_flag_e {
01833 HWLOC_TOPOLOGY_COMPONENTS_FLAG_BLACKLIST = (1UL<<0)
01834 };
01835
01850 HWLOC_DECLSPEC int hwloc_topology_set_components(hwloc_topology_t __hwloc_restrict topology, unsigned long flags, const char * __hwloc_restrict name);
01851
01870 enum hwloc_topology_flags_e {
01891 HWLOC_TOPOLOGY_FLAG_INCLUDE_DISALLOWED = (1UL<<0),
01892
01911 HWLOC_TOPOLOGY_FLAG_IS_THISSYSTEM = (1UL<<1),
01912
01932 HWLOC_TOPOLOGY_FLAG_THISSYSTEM_ALLOWED_RESOURCES = (1UL<<2)
01933 };
01934
01944 HWLOC_DECLSPEC int hwloc_topology_set_flags (hwloc_topology_t topology, unsigned long flags);
01945
01952 HWLOC_DECLSPEC unsigned long hwloc_topology_get_flags (hwloc_topology_t topology);
01953
01961 HWLOC_DECLSPEC int hwloc_topology_is_thissystem(hwloc_topology_t __hwloc_restrict topology) __hwloc_attribute_pure;
01962
01964 struct hwloc_topology_discovery_support {
01966 unsigned char pu;
01968 unsigned char numa;
01970 unsigned char numa_memory;
01972 unsigned char disallowed_pu;
01974 unsigned char disallowed_numa;
01975 };
01976
01982 struct hwloc_topology_cpubind_support {
01984 unsigned char set_thisproc_cpubind;
01986 unsigned char get_thisproc_cpubind;
01988 unsigned char set_proc_cpubind;
01990 unsigned char get_proc_cpubind;
01992 unsigned char set_thisthread_cpubind;
01994 unsigned char get_thisthread_cpubind;
01996 unsigned char set_thread_cpubind;
01998 unsigned char get_thread_cpubind;
02000 unsigned char get_thisproc_last_cpu_location;
02002 unsigned char get_proc_last_cpu_location;
02004 unsigned char get_thisthread_last_cpu_location;
02005 };
02006
02012 struct hwloc_topology_membind_support {
02014 unsigned char set_thisproc_membind;
02016 unsigned char get_thisproc_membind;
02018 unsigned char set_proc_membind;
02020 unsigned char get_proc_membind;
02022 unsigned char set_thisthread_membind;
02024 unsigned char get_thisthread_membind;
02026 unsigned char set_area_membind;
02028 unsigned char get_area_membind;
02030 unsigned char alloc_membind;
02032 unsigned char firsttouch_membind;
02034 unsigned char bind_membind;
02036 unsigned char interleave_membind;
02038 unsigned char nexttouch_membind;
02040 unsigned char migrate_membind;
02042 unsigned char get_area_memlocation;
02043 };
02044
02051 struct hwloc_topology_support {
02052 struct hwloc_topology_discovery_support *discovery;
02053 struct hwloc_topology_cpubind_support *cpubind;
02054 struct hwloc_topology_membind_support *membind;
02055 };
02056
02066 HWLOC_DECLSPEC const struct hwloc_topology_support *hwloc_topology_get_support(hwloc_topology_t __hwloc_restrict topology);
02067
02077 enum hwloc_type_filter_e {
02083 HWLOC_TYPE_FILTER_KEEP_ALL = 0,
02084
02091 HWLOC_TYPE_FILTER_KEEP_NONE = 1,
02092
02105 HWLOC_TYPE_FILTER_KEEP_STRUCTURE = 2,
02106
02120 HWLOC_TYPE_FILTER_KEEP_IMPORTANT = 3
02121 };
02122
02125 HWLOC_DECLSPEC int hwloc_topology_set_type_filter(hwloc_topology_t topology, hwloc_obj_type_t type, enum hwloc_type_filter_e filter);
02126
02129 HWLOC_DECLSPEC int hwloc_topology_get_type_filter(hwloc_topology_t topology, hwloc_obj_type_t type, enum hwloc_type_filter_e *filter);
02130
02135 HWLOC_DECLSPEC int hwloc_topology_set_all_types_filter(hwloc_topology_t topology, enum hwloc_type_filter_e filter);
02136
02141 HWLOC_DECLSPEC int hwloc_topology_set_cache_types_filter(hwloc_topology_t topology, enum hwloc_type_filter_e filter);
02142
02147 HWLOC_DECLSPEC int hwloc_topology_set_icache_types_filter(hwloc_topology_t topology, enum hwloc_type_filter_e filter);
02148
02151 HWLOC_DECLSPEC int hwloc_topology_set_io_types_filter(hwloc_topology_t topology, enum hwloc_type_filter_e filter);
02152
02163 HWLOC_DECLSPEC void hwloc_topology_set_userdata(hwloc_topology_t topology, const void *userdata);
02164
02170 HWLOC_DECLSPEC void * hwloc_topology_get_userdata(hwloc_topology_t topology);
02171
02181 enum hwloc_restrict_flags_e {
02187 HWLOC_RESTRICT_FLAG_REMOVE_CPULESS = (1UL<<0),
02188
02193 HWLOC_RESTRICT_FLAG_BYNODESET = (1UL<<3),
02194
02200 HWLOC_RESTRICT_FLAG_REMOVE_MEMLESS = (1UL<<4),
02201
02206 HWLOC_RESTRICT_FLAG_ADAPT_MISC = (1UL<<1),
02207
02212 HWLOC_RESTRICT_FLAG_ADAPT_IO = (1UL<<2)
02213 };
02214
02239 HWLOC_DECLSPEC int hwloc_topology_restrict(hwloc_topology_t __hwloc_restrict topology, hwloc_const_bitmap_t set, unsigned long flags);
02240
02242 enum hwloc_allow_flags_e {
02247 HWLOC_ALLOW_FLAG_ALL = (1UL<<0),
02248
02256 HWLOC_ALLOW_FLAG_LOCAL_RESTRICTIONS = (1UL<<1),
02257
02260 HWLOC_ALLOW_FLAG_CUSTOM = (1UL<<2)
02261 };
02262
02278 HWLOC_DECLSPEC int hwloc_topology_allow(hwloc_topology_t __hwloc_restrict topology, hwloc_const_cpuset_t cpuset, hwloc_const_nodeset_t nodeset, unsigned long flags);
02279
02301 HWLOC_DECLSPEC hwloc_obj_t hwloc_topology_insert_misc_object(hwloc_topology_t topology, hwloc_obj_t parent, const char *name);
02302
02323 HWLOC_DECLSPEC hwloc_obj_t hwloc_topology_alloc_group_object(hwloc_topology_t topology);
02324
02361 HWLOC_DECLSPEC hwloc_obj_t hwloc_topology_insert_group_object(hwloc_topology_t topology, hwloc_obj_t group);
02362
02372 HWLOC_DECLSPEC int hwloc_obj_add_other_obj_sets(hwloc_obj_t dst, hwloc_obj_t src);
02373
02378 #ifdef __cplusplus
02379 }
02380 #endif
02381
02382
02383
02384 #include "hwloc/helper.h"
02385
02386
02387 #include "hwloc/inlines.h"
02388
02389
02390 #include "hwloc/export.h"
02391
02392
02393 #include "hwloc/distances.h"
02394
02395
02396 #include "hwloc/diff.h"
02397
02398
02399 #include "hwloc/deprecated.h"
02400
02401 #endif