Hardware Locality (hwloc) 2.12.0rc1

plugins.h
1/*
2 * Copyright © 2013-2024 Inria. All rights reserved.
3 * Copyright © 2016 Cisco Systems, Inc. All rights reserved.
4 * See COPYING in top-level directory.
5 */
6
7#ifndef HWLOC_PLUGINS_H
8#define HWLOC_PLUGINS_H
9
14 struct hwloc_backend;
15
16#include "hwloc.h"
17
18#ifdef HWLOC_INSIDE_PLUGIN
19/* needed for hwloc_plugin_check_namespace() */
20#ifdef HWLOC_HAVE_LTDL
21#include <ltdl.h>
22#else
23#include <dlfcn.h>
24#endif
25#endif
26
27
28
41 struct hwloc_disc_component {
45 const char *name;
46
50 unsigned phases;
51
60 unsigned excluded_phases;
61
65 struct hwloc_backend * (*instantiate)(struct hwloc_topology *topology, struct hwloc_disc_component *component, unsigned excluded_phases, const void *data1, const void *data2, const void *data3);
66
79 unsigned priority;
80
84 unsigned enabled_by_default;
85
90 struct hwloc_disc_component * next;
91};
92
94 typedef enum hwloc_disc_phase_e {
99 HWLOC_DISC_PHASE_GLOBAL = (1U<<0),
100
103 HWLOC_DISC_PHASE_CPU = (1U<<1),
104
107 HWLOC_DISC_PHASE_MEMORY = (1U<<2),
108
111 HWLOC_DISC_PHASE_PCI = (1U<<3),
112
115 HWLOC_DISC_PHASE_IO = (1U<<4),
116
119 HWLOC_DISC_PHASE_MISC = (1U<<5),
120
123 HWLOC_DISC_PHASE_ANNOTATE = (1U<<6),
124
130 HWLOC_DISC_PHASE_TWEAK = (1U<<7)
131} hwloc_disc_phase_t;
132
134 enum hwloc_disc_status_flag_e {
136 HWLOC_DISC_STATUS_FLAG_GOT_ALLOWED_RESOURCES = (1UL<<1)
137};
138
144 struct hwloc_disc_status {
148 hwloc_disc_phase_t phase;
149
153 unsigned excluded_phases;
154
156 unsigned long flags;
157};
158
177 struct hwloc_backend {
179 struct hwloc_disc_component * component;
181 struct hwloc_topology * topology;
183 int envvar_forced;
185 struct hwloc_backend * next;
186
190 unsigned phases;
191
193 unsigned long flags;
194
201 int is_thissystem;
202
204 void * private_data;
208 void (*disable)(struct hwloc_backend *backend);
209
215 int (*discover)(struct hwloc_backend *backend, struct hwloc_disc_status *status);
216
221 int (*get_pci_busid_cpuset)(struct hwloc_backend *backend, struct hwloc_pcidev_attr_s *busid, hwloc_bitmap_t cpuset);
222};
223
227HWLOC_DECLSPEC struct hwloc_backend * hwloc_backend_alloc(struct hwloc_topology *topology, struct hwloc_disc_component *component);
228
230HWLOC_DECLSPEC int hwloc_backend_enable(struct hwloc_backend *backend);
231
245 typedef enum hwloc_component_type_e {
247 HWLOC_COMPONENT_TYPE_DISC,
248
250 HWLOC_COMPONENT_TYPE_XML
251} hwloc_component_type_t;
252
258 struct hwloc_component {
260 unsigned abi;
261
279 int (*init)(unsigned long flags);
280
292 void (*finalize)(unsigned long flags);
293
295 hwloc_component_type_t type;
296
298 unsigned long flags;
299
301 void * data;
302};
303
325 static __hwloc_inline int
326 hwloc_plugin_check_namespace(const char *pluginname __hwloc_attribute_unused, const char *symbol __hwloc_attribute_unused)
327{
328#ifdef HWLOC_INSIDE_PLUGIN
329 void *sym;
330#ifdef HWLOC_HAVE_LTDL
331 lt_dlhandle handle = lt_dlopen(NULL);
332#else
333 void *handle = dlopen(NULL, RTLD_NOW|RTLD_LOCAL);
334#endif
335 if (!handle)
336 /* cannot check, assume things will work */
337 return 0;
338#ifdef HWLOC_HAVE_LTDL
339 sym = lt_dlsym(handle, symbol);
340 lt_dlclose(handle);
341#else
342 sym = dlsym(handle, symbol);
343 dlclose(handle);
344#endif
345 if (!sym) {
346 static int verboseenv_checked = 0;
347 static int verboseenv_value = 0;
348 if (!verboseenv_checked) {
349 const char *verboseenv = getenv("HWLOC_PLUGINS_VERBOSE");
350 verboseenv_value = verboseenv ? atoi(verboseenv) : 0;
351 verboseenv_checked = 1;
352 }
353 if (verboseenv_value)
354 fprintf(stderr, "Plugin `%s' disabling itself because it cannot find the `%s' core symbol.\n",
355 pluginname, symbol);
356 return -1;
357 }
358#endif /* HWLOC_INSIDE_PLUGIN */
359 return 0;
360}
361
391HWLOC_DECLSPEC int hwloc_hide_errors(void);
392
393#define HWLOC_SHOW_CRITICAL_ERRORS() (hwloc_hide_errors() < 2)
394#define HWLOC_SHOW_ALL_ERRORS() (hwloc_hide_errors() == 0)
395
424HWLOC_DECLSPEC hwloc_obj_t
425 hwloc__insert_object_by_cpuset(struct hwloc_topology *topology, hwloc_obj_t root,
426 hwloc_obj_t obj, const char *reason);
427
444HWLOC_DECLSPEC void hwloc_insert_object_by_parent(struct hwloc_topology *topology, hwloc_obj_t parent, hwloc_obj_t obj);
445
450HWLOC_DECLSPEC hwloc_obj_t hwloc_alloc_setup_object(hwloc_topology_t topology, hwloc_obj_type_t type, unsigned os_index);
451
460HWLOC_DECLSPEC int hwloc_obj_add_children_sets(hwloc_obj_t obj);
461
469HWLOC_DECLSPEC int hwloc_topology_reconnect(hwloc_topology_t topology, unsigned long flags __hwloc_attribute_unused);
470
487 static __hwloc_inline int
488 hwloc_filter_check_pcidev_subtype_important(unsigned classid)
489{
490 unsigned baseclass = classid >> 8;
491 return (baseclass == 0x03 /* PCI_BASE_CLASS_DISPLAY */
492 || baseclass == 0x02 /* PCI_BASE_CLASS_NETWORK */
493 || baseclass == 0x01 /* PCI_BASE_CLASS_STORAGE */
494 || baseclass == 0x00 /* Unclassified, for Atos/Bull BXI */
495 || baseclass == 0x0b /* PCI_BASE_CLASS_PROCESSOR */
496 || classid == 0x0c04 /* PCI_CLASS_SERIAL_FIBER */
497 || classid == 0x0c06 /* PCI_CLASS_SERIAL_INFINIBAND */
498 || classid == 0x0502 /* PCI_CLASS_MEMORY_CXL */
499 || baseclass == 0x06 /* PCI_BASE_CLASS_BRIDGE with non-PCI downstream. the core will drop the useless ones later */
500 || baseclass == 0x12 /* Processing Accelerators */);
501}
502
507 static __hwloc_inline int
508 hwloc_filter_check_osdev_subtype_important(hwloc_obj_osdev_type_t subtype)
509{
510 return (subtype != HWLOC_OBJ_OSDEV_DMA);
511}
512
519 static __hwloc_inline int
520 hwloc_filter_check_keep_object_type(hwloc_topology_t topology, hwloc_obj_type_t type)
521{
522 enum hwloc_type_filter_e filter = HWLOC_TYPE_FILTER_KEEP_NONE;
523 hwloc_topology_get_type_filter(topology, type, &filter);
524 assert(filter != HWLOC_TYPE_FILTER_KEEP_IMPORTANT); /* IMPORTANT only used for I/O */
525 return filter == HWLOC_TYPE_FILTER_KEEP_NONE ? 0 : 1;
526}
527
532 static __hwloc_inline int
533 hwloc_filter_check_keep_object(hwloc_topology_t topology, hwloc_obj_t obj)
534{
535 hwloc_obj_type_t type = obj->type;
536 enum hwloc_type_filter_e filter = HWLOC_TYPE_FILTER_KEEP_NONE;
537 hwloc_topology_get_type_filter(topology, type, &filter);
538 if (filter == HWLOC_TYPE_FILTER_KEEP_NONE)
539 return 0;
540 if (filter == HWLOC_TYPE_FILTER_KEEP_IMPORTANT) {
541 if (type == HWLOC_OBJ_PCI_DEVICE)
542 return hwloc_filter_check_pcidev_subtype_important(obj->attr->pcidev.class_id);
543 if (type == HWLOC_OBJ_OS_DEVICE)
544 return hwloc_filter_check_osdev_subtype_important(obj->attr->osdev.type);
545 }
546 return 1;
547}
548
565HWLOC_DECLSPEC unsigned hwloc_pcidisc_find_cap(const unsigned char *config, unsigned cap);
566
572HWLOC_DECLSPEC int hwloc_pcidisc_find_linkspeed(const unsigned char *config, unsigned offset, float *linkspeed);
573
578HWLOC_DECLSPEC hwloc_obj_type_t hwloc_pcidisc_check_bridge_type(unsigned device_class, const unsigned char *config);
579
586HWLOC_DECLSPEC int hwloc_pcidisc_find_bridge_buses(unsigned domain, unsigned bus, unsigned dev, unsigned func,
587 unsigned *secondary_busp, unsigned *subordinate_busp,
588 const unsigned char *config);
589
594HWLOC_DECLSPEC void hwloc_pcidisc_tree_insert_by_busid(struct hwloc_obj **treep, struct hwloc_obj *obj);
595
601HWLOC_DECLSPEC int hwloc_pcidisc_tree_attach(struct hwloc_topology *topology, struct hwloc_obj *tree);
602
626HWLOC_DECLSPEC struct hwloc_obj * hwloc_pci_find_parent_by_busid(struct hwloc_topology *topology, unsigned domain, unsigned bus, unsigned dev, unsigned func);
627
634HWLOC_DECLSPEC struct hwloc_obj * hwloc_pci_find_by_busid(struct hwloc_topology *topology, unsigned domain, unsigned bus, unsigned dev, unsigned func);
635
636
650 typedef void * hwloc_backend_distances_add_handle_t;
651
658HWLOC_DECLSPEC hwloc_backend_distances_add_handle_t
659 hwloc_backend_distances_add_create(hwloc_topology_t topology,
660 const char *name, unsigned long kind,
661 unsigned long flags);
662
674HWLOC_DECLSPEC int
675 hwloc_backend_distances_add_values(hwloc_topology_t topology,
676 hwloc_backend_distances_add_handle_t handle,
677 unsigned nbobjs, hwloc_obj_t *objs,
678 hwloc_uint64_t *values,
679 unsigned long flags);
680
687HWLOC_DECLSPEC int
688 hwloc_backend_distances_add_commit(hwloc_topology_t topology,
689 hwloc_backend_distances_add_handle_t handle,
690 unsigned long flags);
691
697#endif /* HWLOC_PLUGINS_H */
hwloc_obj_osdev_type_t
enum hwloc_obj_osdev_type_e hwloc_obj_osdev_type_t
Type of a OS device.
hwloc_obj_type_t
hwloc_obj_type_t
Type of topology object.
Definition hwloc.h:197
HWLOC_OBJ_OSDEV_DMA
@ HWLOC_OBJ_OSDEV_DMA
Operating system dma engine device. For instance the "dma0chan0" DMA channel on Linux.
Definition hwloc.h:384
HWLOC_OBJ_OS_DEVICE
@ HWLOC_OBJ_OS_DEVICE
Operating system device (filtered out by default).
Definition hwloc.h:305
HWLOC_OBJ_PCI_DEVICE
@ HWLOC_OBJ_PCI_DEVICE
PCI device (filtered out by default).
Definition hwloc.h:295
hwloc_topology_t
struct hwloc_topology * hwloc_topology_t
Topology context.
Definition hwloc.h:743
hwloc_topology_get_type_filter
int hwloc_topology_get_type_filter(hwloc_topology_t topology, hwloc_obj_type_t type, enum hwloc_type_filter_e *filter)
Get the current filtering for the given object type.
hwloc_type_filter_e
hwloc_type_filter_e
Type filtering flags.
Definition hwloc.h:2440
HWLOC_TYPE_FILTER_KEEP_NONE
@ HWLOC_TYPE_FILTER_KEEP_NONE
Ignore all objects of this type.
Definition hwloc.h:2454
HWLOC_TYPE_FILTER_KEEP_IMPORTANT
@ HWLOC_TYPE_FILTER_KEEP_IMPORTANT
Only keep likely-important objects of the given type.
Definition hwloc.h:2483
hwloc_bitmap_t
struct hwloc_bitmap_s * hwloc_bitmap_t
Set of bits represented as an opaque pointer to an internal bitmap.
Definition bitmap.h:69
hwloc_backend_enable
int hwloc_backend_enable(struct hwloc_backend *backend)
Enable a previously allocated and setup backend.
hwloc_disc_phase_t
enum hwloc_disc_phase_e hwloc_disc_phase_t
Discovery phase.
hwloc_backend_alloc
struct hwloc_backend * hwloc_backend_alloc(struct hwloc_topology *topology, struct hwloc_disc_component *component)
Allocate a backend structure, set good default values, initialize backend->component and topology,...
hwloc_disc_phase_e
hwloc_disc_phase_e
Discovery phase.
Definition plugins.h:94
hwloc_disc_status_flag_e
hwloc_disc_status_flag_e
Discovery status flags.
Definition plugins.h:134
HWLOC_DISC_PHASE_CPU
@ HWLOC_DISC_PHASE_CPU
CPU discovery.
Definition plugins.h:103
HWLOC_DISC_PHASE_PCI
@ HWLOC_DISC_PHASE_PCI
Attach PCI devices and bridges to existing CPU objects.
Definition plugins.h:111
HWLOC_DISC_PHASE_ANNOTATE
@ HWLOC_DISC_PHASE_ANNOTATE
Annotating existing objects, adding distances, etc.
Definition plugins.h:123
HWLOC_DISC_PHASE_MISC
@ HWLOC_DISC_PHASE_MISC
Misc objects that gets added below anything else.
Definition plugins.h:119
HWLOC_DISC_PHASE_IO
@ HWLOC_DISC_PHASE_IO
I/O discovery that requires PCI devices (OS devices such as OpenCL, CUDA, etc.).
Definition plugins.h:115
HWLOC_DISC_PHASE_GLOBAL
@ HWLOC_DISC_PHASE_GLOBAL
xml or synthetic, platform-specific components such as bgq. Discovers everything including CPU,...
Definition plugins.h:99
HWLOC_DISC_PHASE_MEMORY
@ HWLOC_DISC_PHASE_MEMORY
Attach memory to existing CPU objects.
Definition plugins.h:107
HWLOC_DISC_PHASE_TWEAK
@ HWLOC_DISC_PHASE_TWEAK
Final tweaks to a ready-to-use topology. This phase runs once the topology is loaded,...
Definition plugins.h:130
HWLOC_DISC_STATUS_FLAG_GOT_ALLOWED_RESOURCES
@ HWLOC_DISC_STATUS_FLAG_GOT_ALLOWED_RESOURCES
The sets of allowed resources were already retrieved.
Definition plugins.h:136
hwloc_component_type_t
enum hwloc_component_type_e hwloc_component_type_t
Generic component type.
hwloc_component_type_e
hwloc_component_type_e
Generic component type.
Definition plugins.h:245
hwloc_plugin_check_namespace
static int hwloc_plugin_check_namespace(const char *pluginname, const char *symbol)
Make sure that plugins can lookup core symbols.
Definition plugins.h:326
HWLOC_COMPONENT_TYPE_DISC
@ HWLOC_COMPONENT_TYPE_DISC
The data field must point to a struct hwloc_disc_component.
Definition plugins.h:247
HWLOC_COMPONENT_TYPE_XML
@ HWLOC_COMPONENT_TYPE_XML
The data field must point to a struct hwloc_xml_component.
Definition plugins.h:250
hwloc_alloc_setup_object
hwloc_obj_t hwloc_alloc_setup_object(hwloc_topology_t topology, hwloc_obj_type_t type, unsigned os_index)
Allocate and initialize an object of the given type and physical index.
hwloc_insert_object_by_parent
void hwloc_insert_object_by_parent(struct hwloc_topology *topology, hwloc_obj_t parent, hwloc_obj_t obj)
Insert an object somewhere in the topology.
hwloc_topology_reconnect
int hwloc_topology_reconnect(hwloc_topology_t topology, unsigned long flags)
Request a reconnection of children and levels in the topology.
hwloc__insert_object_by_cpuset
hwloc_obj_t hwloc__insert_object_by_cpuset(struct hwloc_topology *topology, hwloc_obj_t root, hwloc_obj_t obj, const char *reason)
Add an object to the topology.
hwloc_obj_add_children_sets
int hwloc_obj_add_children_sets(hwloc_obj_t obj)
Setup object cpusets/nodesets by OR'ing its children.
hwloc_hide_errors
int hwloc_hide_errors(void)
Check whether error messages are hidden.
hwloc_filter_check_keep_object_type
static int hwloc_filter_check_keep_object_type(hwloc_topology_t topology, hwloc_obj_type_t type)
Check whether a non-I/O object type should be filtered-out.
Definition plugins.h:520
hwloc_filter_check_keep_object
static int hwloc_filter_check_keep_object(hwloc_topology_t topology, hwloc_obj_t obj)
Check whether the given object should be filtered-out.
Definition plugins.h:533
hwloc_filter_check_pcidev_subtype_important
static int hwloc_filter_check_pcidev_subtype_important(unsigned classid)
Check whether the given PCI device classid is important.
Definition plugins.h:488
hwloc_filter_check_osdev_subtype_important
static int hwloc_filter_check_osdev_subtype_important(hwloc_obj_osdev_type_t subtype)
Check whether the given OS device subtype is important.
Definition plugins.h:508
hwloc_pcidisc_find_linkspeed
int hwloc_pcidisc_find_linkspeed(const unsigned char *config, unsigned offset, float *linkspeed)
Fill linkspeed by reading the PCI config space where PCI_CAP_ID_EXP is at position offset.
hwloc_pcidisc_check_bridge_type
hwloc_obj_type_t hwloc_pcidisc_check_bridge_type(unsigned device_class, const unsigned char *config)
Return the hwloc object type (PCI device or Bridge) for the given class and configuration space.
hwloc_pcidisc_find_cap
unsigned hwloc_pcidisc_find_cap(const unsigned char *config, unsigned cap)
Return the offset of the given capability in the PCI config space buffer.
hwloc_pcidisc_find_bridge_buses
int hwloc_pcidisc_find_bridge_buses(unsigned domain, unsigned bus, unsigned dev, unsigned func, unsigned *secondary_busp, unsigned *subordinate_busp, const unsigned char *config)
Fills the attributes of the given PCI bridge using the given PCI config space.
hwloc_pcidisc_tree_insert_by_busid
void hwloc_pcidisc_tree_insert_by_busid(struct hwloc_obj **treep, struct hwloc_obj *obj)
Insert a PCI object in the given PCI tree by looking at PCI bus IDs.
hwloc_pcidisc_tree_attach
int hwloc_pcidisc_tree_attach(struct hwloc_topology *topology, struct hwloc_obj *tree)
Add some hostbridges on top of the given tree of PCI objects and attach them to the topology.
hwloc_pci_find_by_busid
struct hwloc_obj * hwloc_pci_find_by_busid(struct hwloc_topology *topology, unsigned domain, unsigned bus, unsigned dev, unsigned func)
Find the PCI device or bridge matching a PCI bus ID exactly.
hwloc_pci_find_parent_by_busid
struct hwloc_obj * hwloc_pci_find_parent_by_busid(struct hwloc_topology *topology, unsigned domain, unsigned bus, unsigned dev, unsigned func)
Find the object or a parent of a PCI bus ID.
hwloc_backend_distances_add_commit
int hwloc_backend_distances_add_commit(hwloc_topology_t topology, hwloc_backend_distances_add_handle_t handle, unsigned long flags)
Commit a new distances structure.
hwloc_backend_distances_add_values
int hwloc_backend_distances_add_values(hwloc_topology_t topology, hwloc_backend_distances_add_handle_t handle, unsigned nbobjs, hwloc_obj_t *objs, hwloc_uint64_t *values, unsigned long flags)
Specify the objects and values in a new empty distances structure.
hwloc_backend_distances_add_create
hwloc_backend_distances_add_handle_t hwloc_backend_distances_add_create(hwloc_topology_t topology, const char *name, unsigned long kind, unsigned long flags)
Create a new empty distances structure.
hwloc_backend_distances_add_handle_t
void * hwloc_backend_distances_add_handle_t
Handle to a new distances structure during its addition to the topology.
Definition plugins.h:650
hwloc_obj
Structure of a topology object.
Definition hwloc.h:432
hwloc_obj::name
char * name
Object-specific name if any. Mostly used for identifying OS devices and Misc objects where a name str...
Definition hwloc.h:444
hwloc_obj::type
hwloc_obj_type_t type
Type of object.
Definition hwloc.h:434
hwloc_obj::attr
union hwloc_obj_attr_u * attr
Object type-specific Attributes, may be NULL if no attribute value was found.
Definition hwloc.h:451
hwloc_obj_attr_u::pcidev
struct hwloc_obj_attr_u::hwloc_pcidev_attr_s pcidev
hwloc_obj_attr_u::osdev
struct hwloc_obj_attr_u::hwloc_osdev_attr_s osdev
hwloc_obj_attr_u::hwloc_pcidev_attr_s::class_id
unsigned short class_id
The class number (first two bytes, without the prog_if).
Definition hwloc.h:680
hwloc_obj_attr_u::hwloc_osdev_attr_s::type
hwloc_obj_osdev_type_t type
Definition hwloc.h:717
hwloc_disc_component
Discovery component structure.
Definition plugins.h:41
hwloc_disc_component::name
const char * name
Name. If this component is built as a plugin, this name does not have to match the plugin filename.
Definition plugins.h:45
hwloc_disc_component::phases
unsigned phases
Discovery phases performed by this component. OR'ed set of hwloc_disc_phase_t.
Definition plugins.h:50
hwloc_disc_component::excluded_phases
unsigned excluded_phases
Component phases to exclude, as an OR'ed set of hwloc_disc_phase_t.
Definition plugins.h:60
hwloc_disc_component::enabled_by_default
unsigned enabled_by_default
Enabled by default. If unset, if will be disabled unless explicitly requested.
Definition plugins.h:84
hwloc_disc_component::priority
unsigned priority
Component priority. Used to sort topology->components, higher priority first. Also used to decide bet...
Definition plugins.h:79
hwloc_disc_status
Discovery status structure.
Definition plugins.h:144
hwloc_disc_status::excluded_phases
unsigned excluded_phases
Dynamically excluded phases. If a component decides during discovery that some phases are no longer n...
Definition plugins.h:153
hwloc_disc_status::phase
hwloc_disc_phase_t phase
The current discovery phase that is performed. Must match one of the phases in the component phases f...
Definition plugins.h:148
hwloc_disc_status::flags
unsigned long flags
OR'ed set of hwloc_disc_status_flag_e.
Definition plugins.h:156
hwloc_backend
Discovery backend structure.
Definition plugins.h:177
hwloc_backend::private_data
void * private_data
Backend private data, or NULL if none.
Definition plugins.h:204
hwloc_backend::disable
void(* disable)(struct hwloc_backend *backend)
Callback for freeing the private_data. May be NULL.
Definition plugins.h:208
hwloc_backend::flags
unsigned long flags
Backend flags, currently always 0.
Definition plugins.h:193
hwloc_backend::get_pci_busid_cpuset
int(* get_pci_busid_cpuset)(struct hwloc_backend *backend, struct hwloc_pcidev_attr_s *busid, hwloc_bitmap_t cpuset)
Callback to retrieve the locality of a PCI object. Called by the PCI core when attaching PCI hierarch...
Definition plugins.h:221
hwloc_backend::is_thissystem
int is_thissystem
Backend-specific 'is_thissystem' property. Set to 0 if the backend disables the thissystem flag for t...
Definition plugins.h:201
hwloc_backend::discover
int(* discover)(struct hwloc_backend *backend, struct hwloc_disc_status *status)
Main discovery callback. returns -1 on error, either because it couldn't add its objects ot the exist...
Definition plugins.h:215
hwloc_backend::phases
unsigned phases
Discovery phases performed by this component, possibly without some of them if excluded by other comp...
Definition plugins.h:190
hwloc_component
Generic component structure.
Definition plugins.h:258
hwloc_component::abi
unsigned abi
Component ABI version, set to HWLOC_COMPONENT_ABI.
Definition plugins.h:260
hwloc_component::finalize
void(* finalize)(unsigned long flags)
Process-wide component termination callback.
Definition plugins.h:292
hwloc_component::data
void * data
Component data, pointing to a struct hwloc_disc_component or struct hwloc_xml_component.
Definition plugins.h:301
hwloc_component::type
hwloc_component_type_t type
Component type.
Definition plugins.h:295
hwloc_component::flags
unsigned long flags
Component flags, unused for now.
Definition plugins.h:298
hwloc_component::init
int(* init)(unsigned long flags)
Process-wide component initialization callback.
Definition plugins.h:279