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,
00269 HWLOC_OBJ_PCI_DEVICE,
00279 HWLOC_OBJ_OS_DEVICE,
00290 HWLOC_OBJ_MISC,
00305 HWLOC_OBJ_MEMCACHE,
00318 HWLOC_OBJ_DIE,
00322 HWLOC_OBJ_TYPE_MAX
00323 } hwloc_obj_type_t;
00324
00326 typedef enum hwloc_obj_cache_type_e {
00327 HWLOC_OBJ_CACHE_UNIFIED,
00328 HWLOC_OBJ_CACHE_DATA,
00329 HWLOC_OBJ_CACHE_INSTRUCTION
00330 } hwloc_obj_cache_type_t;
00331
00333 typedef enum hwloc_obj_bridge_type_e {
00334 HWLOC_OBJ_BRIDGE_HOST,
00335 HWLOC_OBJ_BRIDGE_PCI
00336 } hwloc_obj_bridge_type_t;
00337
00339 typedef enum hwloc_obj_osdev_type_e {
00340 HWLOC_OBJ_OSDEV_BLOCK,
00342 HWLOC_OBJ_OSDEV_GPU,
00345 HWLOC_OBJ_OSDEV_NETWORK,
00347 HWLOC_OBJ_OSDEV_OPENFABRICS,
00350 HWLOC_OBJ_OSDEV_DMA,
00352 HWLOC_OBJ_OSDEV_COPROC
00356 } hwloc_obj_osdev_type_t;
00357
00377 HWLOC_DECLSPEC int hwloc_compare_types (hwloc_obj_type_t type1, hwloc_obj_type_t type2) __hwloc_attribute_const;
00378
00380 #define HWLOC_TYPE_UNORDERED INT_MAX
00381
00390 union hwloc_obj_attr_u;
00391
00396 struct hwloc_obj {
00397
00398 hwloc_obj_type_t type;
00399 char *subtype;
00401 unsigned os_index;
00406 #define HWLOC_UNKNOWN_INDEX (unsigned)-1
00407
00408 char *name;
00413 hwloc_uint64_t total_memory;
00415 union hwloc_obj_attr_u *attr;
00418
00419 int depth;
00434 unsigned logical_index;
00441
00442 struct hwloc_obj *next_cousin;
00443 struct hwloc_obj *prev_cousin;
00445
00446 struct hwloc_obj *parent;
00447 unsigned sibling_rank;
00448 struct hwloc_obj *next_sibling;
00449 struct hwloc_obj *prev_sibling;
00452 unsigned arity;
00456 struct hwloc_obj **children;
00457 struct hwloc_obj *first_child;
00458 struct hwloc_obj *last_child;
00461 int symmetric_subtree;
00472 unsigned memory_arity;
00475 struct hwloc_obj *memory_first_child;
00490 unsigned io_arity;
00493 struct hwloc_obj *io_first_child;
00502 unsigned misc_arity;
00505 struct hwloc_obj *misc_first_child;
00511
00512 hwloc_cpuset_t cpuset;
00527 hwloc_cpuset_t complete_cpuset;
00540 hwloc_nodeset_t nodeset;
00560 hwloc_nodeset_t complete_nodeset;
00576 struct hwloc_info_s *infos;
00577 unsigned infos_count;
00579
00580 void *userdata;
00585 hwloc_uint64_t gp_index;
00590 };
00594 typedef struct hwloc_obj * hwloc_obj_t;
00595
00597 union hwloc_obj_attr_u {
00599 struct hwloc_numanode_attr_s {
00600 hwloc_uint64_t local_memory;
00601 unsigned page_types_len;
00607 struct hwloc_memory_page_type_s {
00608 hwloc_uint64_t size;
00609 hwloc_uint64_t count;
00610 } * page_types;
00611 } numanode;
00612
00614 struct hwloc_cache_attr_s {
00615 hwloc_uint64_t size;
00616 unsigned depth;
00617 unsigned linesize;
00618 int associativity;
00620 hwloc_obj_cache_type_t type;
00621 } cache;
00623 struct hwloc_group_attr_s {
00624 unsigned depth;
00626 unsigned kind;
00627 unsigned subkind;
00628 unsigned char dont_merge;
00629 } group;
00631 struct hwloc_pcidev_attr_s {
00632 #ifndef HWLOC_HAVE_32BITS_PCI_DOMAIN
00633 unsigned short domain;
00634 #else
00635 unsigned int domain;
00636 #endif
00637 unsigned char bus, dev, func;
00638 unsigned short class_id;
00639 unsigned short vendor_id, device_id, subvendor_id, subdevice_id;
00640 unsigned char revision;
00641 float linkspeed;
00642 } pcidev;
00644 struct hwloc_bridge_attr_s {
00645 union {
00646 struct hwloc_pcidev_attr_s pci;
00647 } upstream;
00648 hwloc_obj_bridge_type_t upstream_type;
00649 union {
00650 struct {
00651 #ifndef HWLOC_HAVE_32BITS_PCI_DOMAIN
00652 unsigned short domain;
00653 #else
00654 unsigned int domain;
00655 #endif
00656 unsigned char secondary_bus, subordinate_bus;
00657 } pci;
00658 } downstream;
00659 hwloc_obj_bridge_type_t downstream_type;
00660 unsigned depth;
00661 } bridge;
00663 struct hwloc_osdev_attr_s {
00664 hwloc_obj_osdev_type_t type;
00665 } osdev;
00666 };
00667
00672 struct hwloc_info_s {
00673 char *name;
00674 char *value;
00675 };
00676
00685 struct hwloc_topology;
00690 typedef struct hwloc_topology * hwloc_topology_t;
00691
00698 HWLOC_DECLSPEC int hwloc_topology_init (hwloc_topology_t *topologyp);
00699
00720 HWLOC_DECLSPEC int hwloc_topology_load(hwloc_topology_t topology);
00721
00726 HWLOC_DECLSPEC void hwloc_topology_destroy (hwloc_topology_t topology);
00727
00738 HWLOC_DECLSPEC int hwloc_topology_dup(hwloc_topology_t *newtopology, hwloc_topology_t oldtopology);
00739
00757 HWLOC_DECLSPEC int hwloc_topology_abi_check(hwloc_topology_t topology);
00758
00770 HWLOC_DECLSPEC void hwloc_topology_check(hwloc_topology_t topology);
00771
00792 HWLOC_DECLSPEC int hwloc_topology_get_depth(hwloc_topology_t __hwloc_restrict topology) __hwloc_attribute_pure;
00793
00817 HWLOC_DECLSPEC int hwloc_get_type_depth (hwloc_topology_t topology, hwloc_obj_type_t type);
00818
00819 enum hwloc_get_type_depth_e {
00820 HWLOC_TYPE_DEPTH_UNKNOWN = -1,
00821 HWLOC_TYPE_DEPTH_MULTIPLE = -2,
00822 HWLOC_TYPE_DEPTH_NUMANODE = -3,
00823 HWLOC_TYPE_DEPTH_BRIDGE = -4,
00824 HWLOC_TYPE_DEPTH_PCI_DEVICE = -5,
00825 HWLOC_TYPE_DEPTH_OS_DEVICE = -6,
00826 HWLOC_TYPE_DEPTH_MISC = -7,
00827 HWLOC_TYPE_DEPTH_MEMCACHE = -8
00828 };
00829
00849 HWLOC_DECLSPEC int hwloc_get_memory_parents_depth (hwloc_topology_t topology);
00850
00864 static __hwloc_inline int
00865 hwloc_get_type_or_below_depth (hwloc_topology_t topology, hwloc_obj_type_t type) __hwloc_attribute_pure;
00866
00880 static __hwloc_inline int
00881 hwloc_get_type_or_above_depth (hwloc_topology_t topology, hwloc_obj_type_t type) __hwloc_attribute_pure;
00882
00890 HWLOC_DECLSPEC hwloc_obj_type_t hwloc_get_depth_type (hwloc_topology_t topology, int depth) __hwloc_attribute_pure;
00891
00894 HWLOC_DECLSPEC unsigned hwloc_get_nbobjs_by_depth (hwloc_topology_t topology, int depth) __hwloc_attribute_pure;
00895
00901 static __hwloc_inline int
00902 hwloc_get_nbobjs_by_type (hwloc_topology_t topology, hwloc_obj_type_t type) __hwloc_attribute_pure;
00903
00908 static __hwloc_inline hwloc_obj_t
00909 hwloc_get_root_obj (hwloc_topology_t topology) __hwloc_attribute_pure;
00910
00912 HWLOC_DECLSPEC hwloc_obj_t hwloc_get_obj_by_depth (hwloc_topology_t topology, int depth, unsigned idx) __hwloc_attribute_pure;
00913
00920 static __hwloc_inline hwloc_obj_t
00921 hwloc_get_obj_by_type (hwloc_topology_t topology, hwloc_obj_type_t type, unsigned idx) __hwloc_attribute_pure;
00922
00927 static __hwloc_inline hwloc_obj_t
00928 hwloc_get_next_obj_by_depth (hwloc_topology_t topology, int depth, hwloc_obj_t prev);
00929
00936 static __hwloc_inline hwloc_obj_t
00937 hwloc_get_next_obj_by_type (hwloc_topology_t topology, hwloc_obj_type_t type,
00938 hwloc_obj_t prev);
00939
00956 HWLOC_DECLSPEC const char * hwloc_obj_type_string (hwloc_obj_type_t type) __hwloc_attribute_const;
00957
00975 HWLOC_DECLSPEC int hwloc_obj_type_snprintf(char * __hwloc_restrict string, size_t size,
00976 hwloc_obj_t obj,
00977 int verbose);
00978
00990 HWLOC_DECLSPEC int hwloc_obj_attr_snprintf(char * __hwloc_restrict string, size_t size,
00991 hwloc_obj_t obj, const char * __hwloc_restrict separator,
00992 int verbose);
00993
01017 HWLOC_DECLSPEC int hwloc_type_sscanf(const char *string,
01018 hwloc_obj_type_t *typep,
01019 union hwloc_obj_attr_u *attrp, size_t attrsize);
01020
01042 HWLOC_DECLSPEC int hwloc_type_sscanf_as_depth(const char *string,
01043 hwloc_obj_type_t *typep,
01044 hwloc_topology_t topology, int *depthp);
01045
01061 static __hwloc_inline const char *
01062 hwloc_obj_get_info_by_name(hwloc_obj_t obj, const char *name) __hwloc_attribute_pure;
01063
01080 HWLOC_DECLSPEC int hwloc_obj_add_info(hwloc_obj_t obj, const char *name, const char *value);
01081
01153 typedef enum {
01156 HWLOC_CPUBIND_PROCESS = (1<<0),
01157
01160 HWLOC_CPUBIND_THREAD = (1<<1),
01161
01185 HWLOC_CPUBIND_STRICT = (1<<2),
01186
01202 HWLOC_CPUBIND_NOMEMBIND = (1<<3)
01203 } hwloc_cpubind_flags_t;
01204
01210 HWLOC_DECLSPEC int hwloc_set_cpubind(hwloc_topology_t topology, hwloc_const_cpuset_t set, int flags);
01211
01217 HWLOC_DECLSPEC int hwloc_get_cpubind(hwloc_topology_t topology, hwloc_cpuset_t set, int flags);
01218
01230 HWLOC_DECLSPEC int hwloc_set_proc_cpubind(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_const_cpuset_t set, int flags);
01231
01243 HWLOC_DECLSPEC int hwloc_get_proc_cpubind(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_cpuset_t set, int flags);
01244
01245 #ifdef hwloc_thread_t
01246
01253 HWLOC_DECLSPEC int hwloc_set_thread_cpubind(hwloc_topology_t topology, hwloc_thread_t thread, hwloc_const_cpuset_t set, int flags);
01254 #endif
01255
01256 #ifdef hwloc_thread_t
01257
01264 HWLOC_DECLSPEC int hwloc_get_thread_cpubind(hwloc_topology_t topology, hwloc_thread_t thread, hwloc_cpuset_t set, int flags);
01265 #endif
01266
01280 HWLOC_DECLSPEC int hwloc_get_last_cpu_location(hwloc_topology_t topology, hwloc_cpuset_t set, int flags);
01281
01298 HWLOC_DECLSPEC int hwloc_get_proc_last_cpu_location(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_cpuset_t set, int flags);
01299
01379 typedef enum {
01387 HWLOC_MEMBIND_DEFAULT = 0,
01388
01398 HWLOC_MEMBIND_FIRSTTOUCH = 1,
01399
01402 HWLOC_MEMBIND_BIND = 2,
01403
01411 HWLOC_MEMBIND_INTERLEAVE = 3,
01412
01418 HWLOC_MEMBIND_NEXTTOUCH = 4,
01419
01426 HWLOC_MEMBIND_MIXED = -1
01427 } hwloc_membind_policy_t;
01428
01442 typedef enum {
01447 HWLOC_MEMBIND_PROCESS = (1<<0),
01448
01452 HWLOC_MEMBIND_THREAD = (1<<1),
01453
01460 HWLOC_MEMBIND_STRICT = (1<<2),
01461
01466 HWLOC_MEMBIND_MIGRATE = (1<<3),
01467
01479 HWLOC_MEMBIND_NOCPUBIND = (1<<4),
01480
01490 HWLOC_MEMBIND_BYNODESET = (1<<5)
01491 } hwloc_membind_flags_t;
01492
01508 HWLOC_DECLSPEC int hwloc_set_membind(hwloc_topology_t topology, hwloc_const_bitmap_t set, hwloc_membind_policy_t policy, int flags);
01509
01554 HWLOC_DECLSPEC int hwloc_get_membind(hwloc_topology_t topology, hwloc_bitmap_t set, hwloc_membind_policy_t * policy, int flags);
01555
01568 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);
01569
01609 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);
01610
01621 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);
01622
01650 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);
01651
01671 HWLOC_DECLSPEC int hwloc_get_area_memlocation(hwloc_topology_t topology, const void *addr, size_t len, hwloc_bitmap_t set, int flags);
01672
01680 HWLOC_DECLSPEC void *hwloc_alloc(hwloc_topology_t topology, size_t len);
01681
01696 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;
01697
01707 static __hwloc_inline void *
01708 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;
01709
01713 HWLOC_DECLSPEC int hwloc_free(hwloc_topology_t topology, void *addr, size_t len);
01714
01751 HWLOC_DECLSPEC int hwloc_topology_set_pid(hwloc_topology_t __hwloc_restrict topology, hwloc_pid_t pid);
01752
01781 HWLOC_DECLSPEC int hwloc_topology_set_synthetic(hwloc_topology_t __hwloc_restrict topology, const char * __hwloc_restrict description);
01782
01809 HWLOC_DECLSPEC int hwloc_topology_set_xml(hwloc_topology_t __hwloc_restrict topology, const char * __hwloc_restrict xmlpath);
01810
01837 HWLOC_DECLSPEC int hwloc_topology_set_xmlbuffer(hwloc_topology_t __hwloc_restrict topology, const char * __hwloc_restrict buffer, int size);
01838
01841 enum hwloc_topology_components_flag_e {
01845 HWLOC_TOPOLOGY_COMPONENTS_FLAG_BLACKLIST = (1UL<<0)
01846 };
01847
01862 HWLOC_DECLSPEC int hwloc_topology_set_components(hwloc_topology_t __hwloc_restrict topology, unsigned long flags, const char * __hwloc_restrict name);
01863
01882 enum hwloc_topology_flags_e {
01903 HWLOC_TOPOLOGY_FLAG_INCLUDE_DISALLOWED = (1UL<<0),
01904
01923 HWLOC_TOPOLOGY_FLAG_IS_THISSYSTEM = (1UL<<1),
01924
01944 HWLOC_TOPOLOGY_FLAG_THISSYSTEM_ALLOWED_RESOURCES = (1UL<<2)
01945 };
01946
01956 HWLOC_DECLSPEC int hwloc_topology_set_flags (hwloc_topology_t topology, unsigned long flags);
01957
01964 HWLOC_DECLSPEC unsigned long hwloc_topology_get_flags (hwloc_topology_t topology);
01965
01973 HWLOC_DECLSPEC int hwloc_topology_is_thissystem(hwloc_topology_t __hwloc_restrict topology) __hwloc_attribute_pure;
01974
01976 struct hwloc_topology_discovery_support {
01978 unsigned char pu;
01980 unsigned char numa;
01982 unsigned char numa_memory;
01984 unsigned char disallowed_pu;
01986 unsigned char disallowed_numa;
01987 };
01988
01994 struct hwloc_topology_cpubind_support {
01996 unsigned char set_thisproc_cpubind;
01998 unsigned char get_thisproc_cpubind;
02000 unsigned char set_proc_cpubind;
02002 unsigned char get_proc_cpubind;
02004 unsigned char set_thisthread_cpubind;
02006 unsigned char get_thisthread_cpubind;
02008 unsigned char set_thread_cpubind;
02010 unsigned char get_thread_cpubind;
02012 unsigned char get_thisproc_last_cpu_location;
02014 unsigned char get_proc_last_cpu_location;
02016 unsigned char get_thisthread_last_cpu_location;
02017 };
02018
02024 struct hwloc_topology_membind_support {
02026 unsigned char set_thisproc_membind;
02028 unsigned char get_thisproc_membind;
02030 unsigned char set_proc_membind;
02032 unsigned char get_proc_membind;
02034 unsigned char set_thisthread_membind;
02036 unsigned char get_thisthread_membind;
02038 unsigned char set_area_membind;
02040 unsigned char get_area_membind;
02042 unsigned char alloc_membind;
02044 unsigned char firsttouch_membind;
02046 unsigned char bind_membind;
02048 unsigned char interleave_membind;
02050 unsigned char nexttouch_membind;
02052 unsigned char migrate_membind;
02054 unsigned char get_area_memlocation;
02055 };
02056
02063 struct hwloc_topology_support {
02064 struct hwloc_topology_discovery_support *discovery;
02065 struct hwloc_topology_cpubind_support *cpubind;
02066 struct hwloc_topology_membind_support *membind;
02067 };
02068
02078 HWLOC_DECLSPEC const struct hwloc_topology_support *hwloc_topology_get_support(hwloc_topology_t __hwloc_restrict topology);
02079
02089 enum hwloc_type_filter_e {
02095 HWLOC_TYPE_FILTER_KEEP_ALL = 0,
02096
02103 HWLOC_TYPE_FILTER_KEEP_NONE = 1,
02104
02117 HWLOC_TYPE_FILTER_KEEP_STRUCTURE = 2,
02118
02132 HWLOC_TYPE_FILTER_KEEP_IMPORTANT = 3
02133 };
02134
02137 HWLOC_DECLSPEC int hwloc_topology_set_type_filter(hwloc_topology_t topology, hwloc_obj_type_t type, enum hwloc_type_filter_e filter);
02138
02141 HWLOC_DECLSPEC int hwloc_topology_get_type_filter(hwloc_topology_t topology, hwloc_obj_type_t type, enum hwloc_type_filter_e *filter);
02142
02147 HWLOC_DECLSPEC int hwloc_topology_set_all_types_filter(hwloc_topology_t topology, enum hwloc_type_filter_e filter);
02148
02153 HWLOC_DECLSPEC int hwloc_topology_set_cache_types_filter(hwloc_topology_t topology, enum hwloc_type_filter_e filter);
02154
02159 HWLOC_DECLSPEC int hwloc_topology_set_icache_types_filter(hwloc_topology_t topology, enum hwloc_type_filter_e filter);
02160
02163 HWLOC_DECLSPEC int hwloc_topology_set_io_types_filter(hwloc_topology_t topology, enum hwloc_type_filter_e filter);
02164
02175 HWLOC_DECLSPEC void hwloc_topology_set_userdata(hwloc_topology_t topology, const void *userdata);
02176
02182 HWLOC_DECLSPEC void * hwloc_topology_get_userdata(hwloc_topology_t topology);
02183
02193 enum hwloc_restrict_flags_e {
02199 HWLOC_RESTRICT_FLAG_REMOVE_CPULESS = (1UL<<0),
02200
02205 HWLOC_RESTRICT_FLAG_BYNODESET = (1UL<<3),
02206
02212 HWLOC_RESTRICT_FLAG_REMOVE_MEMLESS = (1UL<<4),
02213
02218 HWLOC_RESTRICT_FLAG_ADAPT_MISC = (1UL<<1),
02219
02224 HWLOC_RESTRICT_FLAG_ADAPT_IO = (1UL<<2)
02225 };
02226
02251 HWLOC_DECLSPEC int hwloc_topology_restrict(hwloc_topology_t __hwloc_restrict topology, hwloc_const_bitmap_t set, unsigned long flags);
02252
02254 enum hwloc_allow_flags_e {
02259 HWLOC_ALLOW_FLAG_ALL = (1UL<<0),
02260
02268 HWLOC_ALLOW_FLAG_LOCAL_RESTRICTIONS = (1UL<<1),
02269
02272 HWLOC_ALLOW_FLAG_CUSTOM = (1UL<<2)
02273 };
02274
02290 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);
02291
02313 HWLOC_DECLSPEC hwloc_obj_t hwloc_topology_insert_misc_object(hwloc_topology_t topology, hwloc_obj_t parent, const char *name);
02314
02335 HWLOC_DECLSPEC hwloc_obj_t hwloc_topology_alloc_group_object(hwloc_topology_t topology);
02336
02373 HWLOC_DECLSPEC hwloc_obj_t hwloc_topology_insert_group_object(hwloc_topology_t topology, hwloc_obj_t group);
02374
02384 HWLOC_DECLSPEC int hwloc_obj_add_other_obj_sets(hwloc_obj_t dst, hwloc_obj_t src);
02385
02390 #ifdef __cplusplus
02391 }
02392 #endif
02393
02394
02395
02396 #include "hwloc/helper.h"
02397
02398
02399 #include "hwloc/inlines.h"
02400
02401
02402 #include "hwloc/export.h"
02403
02404
02405 #include "hwloc/distances.h"
02406
02407
02408 #include "hwloc/diff.h"
02409
02410
02411 #include "hwloc/deprecated.h"
02412
02413 #endif