7 #ifndef HWLOC_PLUGINS_H
8 #define HWLOC_PLUGINS_H
18 #ifdef HWLOC_INSIDE_PLUGIN
20 #ifdef HWLOC_HAVE_LTDL
187 struct hwloc_topology * topology;
415 static __hwloc_inline int
418 #ifdef HWLOC_INSIDE_PLUGIN
420 #ifdef HWLOC_HAVE_LTDL
421 lt_dlhandle handle = lt_dlopen(NULL);
423 void *handle = dlopen(NULL, RTLD_NOW|RTLD_LOCAL);
428 #ifdef HWLOC_HAVE_LTDL
429 sym = lt_dlsym(handle, symbol);
432 sym = dlsym(handle, symbol);
436 static int verboseenv_checked = 0;
437 static int verboseenv_value = 0;
438 if (!verboseenv_checked) {
439 const char *verboseenv = getenv( "HWLOC_PLUGINS_VERBOSE");
440 verboseenv_value = verboseenv ? atoi(verboseenv) : 0;
441 verboseenv_checked = 1;
443 if (verboseenv_value)
444 fprintf(stderr, "Plugin `%s' disabling itself because it cannot find the `%s' core symbol.\n",
465 static __hwloc_inline int
468 unsigned baseclass = classid >> 8;
469 return (baseclass == 0x03
475 || baseclass == 0x12 );
482 static __hwloc_inline int
494 static __hwloc_inline int
507 static __hwloc_inline int
559 unsigned *secondary_busp, unsigned *subordinate_busp,
560 const unsigned char *config);
unsigned enabled_by_default Enabled by default. If unset, if will be disabled unless explicitly requested. Definition: plugins.h:81
hwloc_obj_type_t type Type of object. Definition: hwloc.h:397
struct hwloc_obj_attr_u::hwloc_pcidev_attr_s pcidev
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_PCI_DEVICE PCI device (filtered out by default). Definition: hwloc.h:269
hwloc_component_type_e Generic component type. Definition: plugins.h:248
void * data Component data, pointing to a struct hwloc_disc_component or struct hwloc_xml_component. Definition: plugins.h:304
@ HWLOC_OBJ_OS_DEVICE Operating system device (filtered out by default). Definition: hwloc.h:279
struct hwloc_obj_attr_u::hwloc_osdev_attr_s osdev
struct hwloc_topology * hwloc_topology_t Topology context. Definition: hwloc.h:691
enum hwloc_disc_phase_e hwloc_disc_phase_t Discovery phase.
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:42
static int hwloc_filter_check_pcidev_subtype_important(unsigned classid) Check whether the given PCI device classid is important. Definition: plugins.h:466
static int hwloc_plugin_check_namespace(const char *pluginname, const char *symbol) Make sure that plugins can lookup core symbols. Definition: plugins.h:416
void * private_data Backend private data, or NULL if none. Definition: plugins.h:210
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:221
unsigned phases Discovery phases performed by this component, possibly without some of them if excluded by other comp... Definition: plugins.h:196
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,...
int(* init)(unsigned long flags) Process-wide component initialization callback. Definition: plugins.h:282
enum hwloc_obj_osdev_type_e hwloc_obj_osdev_type_t Type of a OS device.
unsigned long flags Component flags, unused for now. Definition: plugins.h:301
Generic component structure. Definition: plugins.h:261
hwloc_disc_phase_e Discovery phase. Definition: plugins.h:100
int hwloc_backend_enable(struct hwloc_backend *backend) Enable a previously allocated and setup backend.
int hwloc_hide_errors(void) Check whether insertion errors are hidden.
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:483
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_DISC_STATUS_FLAG_GOT_ALLOWED_RESOURCES The sets of allowed resources were already retrieved. Definition: plugins.h:142
@ HWLOC_DISC_PHASE_CPU CPU discovery. Definition: plugins.h:109
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:154
@ HWLOC_DISC_PHASE_TWEAK Final tweaks to a ready-to-use topology. This phase runs once the topology is loaded,... Definition: plugins.h:136
Discovery status structure. Definition: plugins.h:150
hwloc_component_type_t type Component type. Definition: plugins.h:298
@ HWLOC_TYPE_FILTER_KEEP_IMPORTANT Only keep likely-important objects of the given type. Definition: hwloc.h:2177
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_obj_osdev_type_t type Definition: hwloc.h:665
unsigned priority Component priority. Used to sort topology->components, higher priority first. Also used to decide bet... Definition: plugins.h:76
unsigned short class_id Definition: hwloc.h:639
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:227
union hwloc_obj_attr_u * attr Object type-specific Attributes, may be NULL if no attribute value was found. Definition: hwloc.h:414
void(* disable)(struct hwloc_backend *backend) Callback for freeing the private_data. May be NULL. Definition: plugins.h:214
@ HWLOC_TYPE_FILTER_KEEP_NONE Ignore all objects of this type. Definition: hwloc.h:2148
unsigned excluded_phases Component phases to exclude, as an OR'ed set of hwloc_disc_phase_t. Definition: plugins.h:57
@ HWLOC_DISC_PHASE_MEMORY Attach memory to existing CPU objects. Definition: plugins.h:113
hwloc_type_filter_e Type filtering flags. Definition: hwloc.h:2134
@ HWLOC_DISC_PHASE_GLOBAL xml or synthetic, platform-specific components such as bgq. Discovers everything including CPU,... Definition: plugins.h:105
void(* finalize)(unsigned long flags) Process-wide component termination callback. Definition: plugins.h:295
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.
int hwloc_obj_add_children_sets(hwloc_obj_t obj) Setup object cpusets/nodesets by OR'ing its children.
unsigned long flags OR'ed set of hwloc_disc_status_flag_e. Definition: plugins.h:162
hwloc_disc_status_flag_e Discovery status flags. Definition: plugins.h:140
@ HWLOC_COMPONENT_TYPE_DISC The data field must point to a struct hwloc_disc_component. Definition: plugins.h:250
@ HWLOC_COMPONENT_TYPE_XML The data field must point to a struct hwloc_xml_component. Definition: plugins.h:253
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.
struct hwloc_obj * hwloc_pci_find_parent_by_busid(struct hwloc_topology *topology, unsigned domain, unsigned bus, unsigned dev, unsigned func) Find the normal parent of a PCI bus ID.
@ HWLOC_DISC_PHASE_IO I/O discovery that requires PCI devices (OS devices such as OpenCL, CUDA, etc.). Definition: plugins.h:121
hwloc_obj_type_t Type of topology object. Definition: hwloc.h:176
int hwloc_topology_reconnect(hwloc_topology_t topology, unsigned long flags) Request a reconnection of children and levels in the topology.
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.
Discovery backend structure. Definition: plugins.h:183
@ HWLOC_DISC_PHASE_MISC Misc objects that gets added below anything else. Definition: plugins.h:125
int is_thissystem Backend-specific 'is_thissystem' property. Set to 0 if the backend disables the thissystem flag for t... Definition: plugins.h:207
unsigned phases Discovery phases performed by this component. OR'ed set of hwloc_disc_phase_t. Definition: plugins.h:47
@ HWLOC_DISC_PHASE_PCI Attach PCI devices and bridges to existing CPU objects. Definition: plugins.h:117
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.
unsigned hwloc_pcidisc_find_cap(const unsigned char *config, unsigned cap) Return the offset of the given capability in the PCI config space buffer.
Discovery component structure. Definition: plugins.h:38
@ HWLOC_DISC_PHASE_ANNOTATE Annotating existing objects, adding distances, etc. Definition: plugins.h:129
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.
unsigned abi Component ABI version, set to HWLOC_COMPONENT_ABI. Definition: plugins.h:263
Structure of a topology object. Definition: hwloc.h:395
unsigned long flags Backend flags, currently always 0. Definition: plugins.h:199
@ HWLOC_OBJ_OSDEV_DMA Operating system dma engine device. For instance the "dma0chan0" DMA channel on Linux. Definition: hwloc.h:350
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:508
enum hwloc_component_type_e hwloc_component_type_t Generic component type.
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.
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:495
unsigned excluded_phases Dynamically excluded phases. If a component decides during discovery that some phases are no longer n... Definition: plugins.h:159
struct hwloc_bitmap_s * hwloc_bitmap_t Set of bits represented as an opaque pointer to an internal bitmap. Definition: bitmap.h:68
|