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
00367 enum hwloc_compare_types_e {
00368 HWLOC_TYPE_UNORDERED = INT_MAX
00369 };
00370
00379 union hwloc_obj_attr_u;
00380
00385 struct hwloc_obj {
00386
00387 hwloc_obj_type_t type;
00388 char *subtype;
00390 unsigned os_index;
00395 #define HWLOC_UNKNOWN_INDEX (unsigned)-1
00396
00397 char *name;
00402 hwloc_uint64_t total_memory;
00404 union hwloc_obj_attr_u *attr;
00407
00408 int depth;
00423 unsigned logical_index;
00430
00431 struct hwloc_obj *next_cousin;
00432 struct hwloc_obj *prev_cousin;
00434
00435 struct hwloc_obj *parent;
00436 unsigned sibling_rank;
00437 struct hwloc_obj *next_sibling;
00438 struct hwloc_obj *prev_sibling;
00441 unsigned arity;
00445 struct hwloc_obj **children;
00446 struct hwloc_obj *first_child;
00447 struct hwloc_obj *last_child;
00450 int symmetric_subtree;
00461 unsigned memory_arity;
00464 struct hwloc_obj *memory_first_child;
00479 unsigned io_arity;
00482 struct hwloc_obj *io_first_child;
00491 unsigned misc_arity;
00494 struct hwloc_obj *misc_first_child;
00500
00501 hwloc_cpuset_t cpuset;
00516 hwloc_cpuset_t complete_cpuset;
00529 hwloc_nodeset_t nodeset;
00549 hwloc_nodeset_t complete_nodeset;
00565 struct hwloc_info_s *infos;
00566 unsigned infos_count;
00568
00569 void *userdata;
00574 hwloc_uint64_t gp_index;
00579 };
00583 typedef struct hwloc_obj * hwloc_obj_t;
00584
00586 union hwloc_obj_attr_u {
00588 struct hwloc_numanode_attr_s {
00589 hwloc_uint64_t local_memory;
00590 unsigned page_types_len;
00596 struct hwloc_memory_page_type_s {
00597 hwloc_uint64_t size;
00598 hwloc_uint64_t count;
00599 } * page_types;
00600 } numanode;
00601
00603 struct hwloc_cache_attr_s {
00604 hwloc_uint64_t size;
00605 unsigned depth;
00606 unsigned linesize;
00607 int associativity;
00609 hwloc_obj_cache_type_t type;
00610 } cache;
00612 struct hwloc_group_attr_s {
00613 unsigned depth;
00615 unsigned kind;
00616 unsigned subkind;
00617 unsigned char dont_merge;
00618 } group;
00620 struct hwloc_pcidev_attr_s {
00621 unsigned short domain;
00622 unsigned char bus, dev, func;
00623 unsigned short class_id;
00624 unsigned short vendor_id, device_id, subvendor_id, subdevice_id;
00625 unsigned char revision;
00626 float linkspeed;
00627 } pcidev;
00629 struct hwloc_bridge_attr_s {
00630 union {
00631 struct hwloc_pcidev_attr_s pci;
00632 } upstream;
00633 hwloc_obj_bridge_type_t upstream_type;
00634 union {
00635 struct {
00636 unsigned short domain;
00637 unsigned char secondary_bus, subordinate_bus;
00638 } pci;
00639 } downstream;
00640 hwloc_obj_bridge_type_t downstream_type;
00641 unsigned depth;
00642 } bridge;
00644 struct hwloc_osdev_attr_s {
00645 hwloc_obj_osdev_type_t type;
00646 } osdev;
00647 };
00648
00653 struct hwloc_info_s {
00654 char *name;
00655 char *value;
00656 };
00657
00666 struct hwloc_topology;
00671 typedef struct hwloc_topology * hwloc_topology_t;
00672
00679 HWLOC_DECLSPEC int hwloc_topology_init (hwloc_topology_t *topologyp);
00680
00701 HWLOC_DECLSPEC int hwloc_topology_load(hwloc_topology_t topology);
00702
00707 HWLOC_DECLSPEC void hwloc_topology_destroy (hwloc_topology_t topology);
00708
00719 HWLOC_DECLSPEC int hwloc_topology_dup(hwloc_topology_t *newtopology, hwloc_topology_t oldtopology);
00720
00738 HWLOC_DECLSPEC int hwloc_topology_abi_check(hwloc_topology_t topology);
00739
00751 HWLOC_DECLSPEC void hwloc_topology_check(hwloc_topology_t topology);
00752
00773 HWLOC_DECLSPEC int hwloc_topology_get_depth(hwloc_topology_t __hwloc_restrict topology) __hwloc_attribute_pure;
00774
00798 HWLOC_DECLSPEC int hwloc_get_type_depth (hwloc_topology_t topology, hwloc_obj_type_t type);
00799
00800 enum hwloc_get_type_depth_e {
00801 HWLOC_TYPE_DEPTH_UNKNOWN = -1,
00802 HWLOC_TYPE_DEPTH_MULTIPLE = -2,
00803 HWLOC_TYPE_DEPTH_NUMANODE = -3,
00804 HWLOC_TYPE_DEPTH_BRIDGE = -4,
00805 HWLOC_TYPE_DEPTH_PCI_DEVICE = -5,
00806 HWLOC_TYPE_DEPTH_OS_DEVICE = -6,
00807 HWLOC_TYPE_DEPTH_MISC = -7,
00808 HWLOC_TYPE_DEPTH_MEMCACHE = -8
00809 };
00810
00830 HWLOC_DECLSPEC int hwloc_get_memory_parents_depth (hwloc_topology_t topology);
00831
00845 static __hwloc_inline int
00846 hwloc_get_type_or_below_depth (hwloc_topology_t topology, hwloc_obj_type_t type) __hwloc_attribute_pure;
00847
00861 static __hwloc_inline int
00862 hwloc_get_type_or_above_depth (hwloc_topology_t topology, hwloc_obj_type_t type) __hwloc_attribute_pure;
00863
00871 HWLOC_DECLSPEC hwloc_obj_type_t hwloc_get_depth_type (hwloc_topology_t topology, int depth) __hwloc_attribute_pure;
00872
00875 HWLOC_DECLSPEC unsigned hwloc_get_nbobjs_by_depth (hwloc_topology_t topology, int depth) __hwloc_attribute_pure;
00876
00882 static __hwloc_inline int
00883 hwloc_get_nbobjs_by_type (hwloc_topology_t topology, hwloc_obj_type_t type) __hwloc_attribute_pure;
00884
00889 static __hwloc_inline hwloc_obj_t
00890 hwloc_get_root_obj (hwloc_topology_t topology) __hwloc_attribute_pure;
00891
00893 HWLOC_DECLSPEC hwloc_obj_t hwloc_get_obj_by_depth (hwloc_topology_t topology, int depth, unsigned idx) __hwloc_attribute_pure;
00894
00901 static __hwloc_inline hwloc_obj_t
00902 hwloc_get_obj_by_type (hwloc_topology_t topology, hwloc_obj_type_t type, unsigned idx) __hwloc_attribute_pure;
00903
00908 static __hwloc_inline hwloc_obj_t
00909 hwloc_get_next_obj_by_depth (hwloc_topology_t topology, int depth, hwloc_obj_t prev);
00910
00917 static __hwloc_inline hwloc_obj_t
00918 hwloc_get_next_obj_by_type (hwloc_topology_t topology, hwloc_obj_type_t type,
00919 hwloc_obj_t prev);
00920
00937 HWLOC_DECLSPEC const char * hwloc_obj_type_string (hwloc_obj_type_t type) __hwloc_attribute_const;
00938
00956 HWLOC_DECLSPEC int hwloc_obj_type_snprintf(char * __hwloc_restrict string, size_t size,
00957 hwloc_obj_t obj,
00958 int verbose);
00959
00971 HWLOC_DECLSPEC int hwloc_obj_attr_snprintf(char * __hwloc_restrict string, size_t size,
00972 hwloc_obj_t obj, const char * __hwloc_restrict separator,
00973 int verbose);
00974
00998 HWLOC_DECLSPEC int hwloc_type_sscanf(const char *string,
00999 hwloc_obj_type_t *typep,
01000 union hwloc_obj_attr_u *attrp, size_t attrsize);
01001
01023 HWLOC_DECLSPEC int hwloc_type_sscanf_as_depth(const char *string,
01024 hwloc_obj_type_t *typep,
01025 hwloc_topology_t topology, int *depthp);
01026
01042 static __hwloc_inline const char *
01043 hwloc_obj_get_info_by_name(hwloc_obj_t obj, const char *name) __hwloc_attribute_pure;
01044
01061 HWLOC_DECLSPEC int hwloc_obj_add_info(hwloc_obj_t obj, const char *name, const char *value);
01062
01134 typedef enum {
01137 HWLOC_CPUBIND_PROCESS = (1<<0),
01138
01141 HWLOC_CPUBIND_THREAD = (1<<1),
01142
01166 HWLOC_CPUBIND_STRICT = (1<<2),
01167
01183 HWLOC_CPUBIND_NOMEMBIND = (1<<3)
01184 } hwloc_cpubind_flags_t;
01185
01191 HWLOC_DECLSPEC int hwloc_set_cpubind(hwloc_topology_t topology, hwloc_const_cpuset_t set, int flags);
01192
01198 HWLOC_DECLSPEC int hwloc_get_cpubind(hwloc_topology_t topology, hwloc_cpuset_t set, int flags);
01199
01211 HWLOC_DECLSPEC int hwloc_set_proc_cpubind(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_const_cpuset_t set, int flags);
01212
01224 HWLOC_DECLSPEC int hwloc_get_proc_cpubind(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_cpuset_t set, int flags);
01225
01226 #ifdef hwloc_thread_t
01227
01234 HWLOC_DECLSPEC int hwloc_set_thread_cpubind(hwloc_topology_t topology, hwloc_thread_t thread, hwloc_const_cpuset_t set, int flags);
01235 #endif
01236
01237 #ifdef hwloc_thread_t
01238
01245 HWLOC_DECLSPEC int hwloc_get_thread_cpubind(hwloc_topology_t topology, hwloc_thread_t thread, hwloc_cpuset_t set, int flags);
01246 #endif
01247
01261 HWLOC_DECLSPEC int hwloc_get_last_cpu_location(hwloc_topology_t topology, hwloc_cpuset_t set, int flags);
01262
01279 HWLOC_DECLSPEC int hwloc_get_proc_last_cpu_location(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_cpuset_t set, int flags);
01280
01360 typedef enum {
01368 HWLOC_MEMBIND_DEFAULT = 0,
01369
01379 HWLOC_MEMBIND_FIRSTTOUCH = 1,
01380
01383 HWLOC_MEMBIND_BIND = 2,
01384
01392 HWLOC_MEMBIND_INTERLEAVE = 3,
01393
01399 HWLOC_MEMBIND_NEXTTOUCH = 4,
01400
01407 HWLOC_MEMBIND_MIXED = -1
01408 } hwloc_membind_policy_t;
01409
01423 typedef enum {
01428 HWLOC_MEMBIND_PROCESS = (1<<0),
01429
01433 HWLOC_MEMBIND_THREAD = (1<<1),
01434
01441 HWLOC_MEMBIND_STRICT = (1<<2),
01442
01447 HWLOC_MEMBIND_MIGRATE = (1<<3),
01448
01460 HWLOC_MEMBIND_NOCPUBIND = (1<<4),
01461
01471 HWLOC_MEMBIND_BYNODESET = (1<<5)
01472 } hwloc_membind_flags_t;
01473
01489 HWLOC_DECLSPEC int hwloc_set_membind(hwloc_topology_t topology, hwloc_const_bitmap_t set, hwloc_membind_policy_t policy, int flags);
01490
01535 HWLOC_DECLSPEC int hwloc_get_membind(hwloc_topology_t topology, hwloc_bitmap_t set, hwloc_membind_policy_t * policy, int flags);
01536
01549 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);
01550
01590 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);
01591
01602 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);
01603
01631 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);
01632
01652 HWLOC_DECLSPEC int hwloc_get_area_memlocation(hwloc_topology_t topology, const void *addr, size_t len, hwloc_bitmap_t set, int flags);
01653
01661 HWLOC_DECLSPEC void *hwloc_alloc(hwloc_topology_t topology, size_t len);
01662
01677 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;
01678
01688 static __hwloc_inline void *
01689 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;
01690
01694 HWLOC_DECLSPEC int hwloc_free(hwloc_topology_t topology, void *addr, size_t len);
01695
01732 HWLOC_DECLSPEC int hwloc_topology_set_pid(hwloc_topology_t __hwloc_restrict topology, hwloc_pid_t pid);
01733
01762 HWLOC_DECLSPEC int hwloc_topology_set_synthetic(hwloc_topology_t __hwloc_restrict topology, const char * __hwloc_restrict description);
01763
01790 HWLOC_DECLSPEC int hwloc_topology_set_xml(hwloc_topology_t __hwloc_restrict topology, const char * __hwloc_restrict xmlpath);
01791
01818 HWLOC_DECLSPEC int hwloc_topology_set_xmlbuffer(hwloc_topology_t __hwloc_restrict topology, const char * __hwloc_restrict buffer, int size);
01819
01822 enum hwloc_topology_components_flag_e {
01826 HWLOC_TOPOLOGY_COMPONENTS_FLAG_BLACKLIST = (1UL<<0)
01827 };
01828
01843 HWLOC_DECLSPEC int hwloc_topology_set_components(hwloc_topology_t __hwloc_restrict topology, unsigned long flags, const char * __hwloc_restrict name);
01844
01863 enum hwloc_topology_flags_e {
01884 HWLOC_TOPOLOGY_FLAG_INCLUDE_DISALLOWED = (1UL<<0),
01885
01904 HWLOC_TOPOLOGY_FLAG_IS_THISSYSTEM = (1UL<<1),
01905
01925 HWLOC_TOPOLOGY_FLAG_THISSYSTEM_ALLOWED_RESOURCES = (1UL<<2)
01926 };
01927
01937 HWLOC_DECLSPEC int hwloc_topology_set_flags (hwloc_topology_t topology, unsigned long flags);
01938
01945 HWLOC_DECLSPEC unsigned long hwloc_topology_get_flags (hwloc_topology_t topology);
01946
01954 HWLOC_DECLSPEC int hwloc_topology_is_thissystem(hwloc_topology_t __hwloc_restrict topology) __hwloc_attribute_pure;
01955
01957 struct hwloc_topology_discovery_support {
01959 unsigned char pu;
01961 unsigned char numa;
01963 unsigned char numa_memory;
01965 unsigned char disallowed_pu;
01967 unsigned char disallowed_numa;
01968 };
01969
01975 struct hwloc_topology_cpubind_support {
01977 unsigned char set_thisproc_cpubind;
01979 unsigned char get_thisproc_cpubind;
01981 unsigned char set_proc_cpubind;
01983 unsigned char get_proc_cpubind;
01985 unsigned char set_thisthread_cpubind;
01987 unsigned char get_thisthread_cpubind;
01989 unsigned char set_thread_cpubind;
01991 unsigned char get_thread_cpubind;
01993 unsigned char get_thisproc_last_cpu_location;
01995 unsigned char get_proc_last_cpu_location;
01997 unsigned char get_thisthread_last_cpu_location;
01998 };
01999
02005 struct hwloc_topology_membind_support {
02007 unsigned char set_thisproc_membind;
02009 unsigned char get_thisproc_membind;
02011 unsigned char set_proc_membind;
02013 unsigned char get_proc_membind;
02015 unsigned char set_thisthread_membind;
02017 unsigned char get_thisthread_membind;
02019 unsigned char set_area_membind;
02021 unsigned char get_area_membind;
02023 unsigned char alloc_membind;
02025 unsigned char firsttouch_membind;
02027 unsigned char bind_membind;
02029 unsigned char interleave_membind;
02031 unsigned char nexttouch_membind;
02033 unsigned char migrate_membind;
02035 unsigned char get_area_memlocation;
02036 };
02037
02044 struct hwloc_topology_support {
02045 struct hwloc_topology_discovery_support *discovery;
02046 struct hwloc_topology_cpubind_support *cpubind;
02047 struct hwloc_topology_membind_support *membind;
02048 };
02049
02059 HWLOC_DECLSPEC const struct hwloc_topology_support *hwloc_topology_get_support(hwloc_topology_t __hwloc_restrict topology);
02060
02070 enum hwloc_type_filter_e {
02076 HWLOC_TYPE_FILTER_KEEP_ALL = 0,
02077
02084 HWLOC_TYPE_FILTER_KEEP_NONE = 1,
02085
02098 HWLOC_TYPE_FILTER_KEEP_STRUCTURE = 2,
02099
02113 HWLOC_TYPE_FILTER_KEEP_IMPORTANT = 3
02114 };
02115
02118 HWLOC_DECLSPEC int hwloc_topology_set_type_filter(hwloc_topology_t topology, hwloc_obj_type_t type, enum hwloc_type_filter_e filter);
02119
02122 HWLOC_DECLSPEC int hwloc_topology_get_type_filter(hwloc_topology_t topology, hwloc_obj_type_t type, enum hwloc_type_filter_e *filter);
02123
02128 HWLOC_DECLSPEC int hwloc_topology_set_all_types_filter(hwloc_topology_t topology, enum hwloc_type_filter_e filter);
02129
02134 HWLOC_DECLSPEC int hwloc_topology_set_cache_types_filter(hwloc_topology_t topology, enum hwloc_type_filter_e filter);
02135
02140 HWLOC_DECLSPEC int hwloc_topology_set_icache_types_filter(hwloc_topology_t topology, enum hwloc_type_filter_e filter);
02141
02144 HWLOC_DECLSPEC int hwloc_topology_set_io_types_filter(hwloc_topology_t topology, enum hwloc_type_filter_e filter);
02145
02156 HWLOC_DECLSPEC void hwloc_topology_set_userdata(hwloc_topology_t topology, const void *userdata);
02157
02163 HWLOC_DECLSPEC void * hwloc_topology_get_userdata(hwloc_topology_t topology);
02164
02174 enum hwloc_restrict_flags_e {
02180 HWLOC_RESTRICT_FLAG_REMOVE_CPULESS = (1UL<<0),
02181
02186 HWLOC_RESTRICT_FLAG_BYNODESET = (1UL<<3),
02187
02193 HWLOC_RESTRICT_FLAG_REMOVE_MEMLESS = (1UL<<4),
02194
02199 HWLOC_RESTRICT_FLAG_ADAPT_MISC = (1UL<<1),
02200
02205 HWLOC_RESTRICT_FLAG_ADAPT_IO = (1UL<<2)
02206 };
02207
02232 HWLOC_DECLSPEC int hwloc_topology_restrict(hwloc_topology_t __hwloc_restrict topology, hwloc_const_bitmap_t set, unsigned long flags);
02233
02235 enum hwloc_allow_flags_e {
02240 HWLOC_ALLOW_FLAG_ALL = (1UL<<0),
02241
02249 HWLOC_ALLOW_FLAG_LOCAL_RESTRICTIONS = (1UL<<1),
02250
02253 HWLOC_ALLOW_FLAG_CUSTOM = (1UL<<2)
02254 };
02255
02271 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);
02272
02294 HWLOC_DECLSPEC hwloc_obj_t hwloc_topology_insert_misc_object(hwloc_topology_t topology, hwloc_obj_t parent, const char *name);
02295
02316 HWLOC_DECLSPEC hwloc_obj_t hwloc_topology_alloc_group_object(hwloc_topology_t topology);
02317
02354 HWLOC_DECLSPEC hwloc_obj_t hwloc_topology_insert_group_object(hwloc_topology_t topology, hwloc_obj_t group);
02355
02365 HWLOC_DECLSPEC int hwloc_obj_add_other_obj_sets(hwloc_obj_t dst, hwloc_obj_t src);
02366
02371 #ifdef __cplusplus
02372 }
02373 #endif
02374
02375
02376
02377 #include "hwloc/helper.h"
02378
02379
02380 #include "hwloc/inlines.h"
02381
02382
02383 #include "hwloc/export.h"
02384
02385
02386 #include "hwloc/distances.h"
02387
02388
02389 #include "hwloc/diff.h"
02390
02391
02392 #include "hwloc/deprecated.h"
02393
02394 #endif