|
typedef void(* hwloc_report_error_t)(const char *msg, int line) |
Type of error callbacks during object insertion.
Add an object to the topology and specify which error callback to use.
Aside from the error callback selection, this function is identical to hwloc_insert_object_by_cpuset()
Allocate and initialize an object of the given type and physical index.
Setup object cpusets/nodesets by OR'ing its children.
Used when adding an object late in the topology, after propagating sets up and down. The caller should use this after inserting by cpuset (which means the cpusets is already OK). Typical case: PCI backend adding a hostbridge parent.
int hwloc_hide_errors |
( |
void |
| ) |
|
Check whether insertion errors are hidden.
struct hwloc_obj* hwloc_insert_object_by_cpuset |
( |
struct hwloc_topology * |
topology, |
|
|
hwloc_obj_t |
obj |
|
) |
| |
Add an object to the topology.
It is sorted along the tree of other objects according to the inclusion of cpusets, to eventually be added as a child of the smallest object including this object.
If the cpuset is empty, the type of the object (and maybe some attributes) must be enough to find where to insert the object. This is especially true for NUMA nodes with memory and no CPUs.
The given object should not have children.
This shall only be called before levels are built.
In case of error, hwloc_report_os_error() is called.
Returns the object on success. Returns NULL and frees obj on error. Returns another object and frees obj if it was merged with an identical pre-existing object.
Insert an object somewhere in the topology.
It is added as the last child of the given parent. The cpuset is completely ignored, so strange objects such as I/O devices should preferably be inserted with this.
When used for "normal" children with cpusets (when importing from XML when duplicating a topology), the caller should make sure children are inserted in order.
The given object may have children.
Remember to call topology_connect() afterwards to fix handy pointers.
static int hwloc_plugin_check_namespace |
( |
const char * |
pluginname, |
|
|
const char * |
symbol |
|
) |
| |
|
inlinestatic |
Make sure that plugins can lookup core symbols.
This is a sanity check to avoid lazy-lookup failures when libhwloc is loaded within a plugin, and later tries to load its own plugins. This may fail (and abort the program) if libhwloc symbols are in a private namespace.
- Returns
- 0 on success.
-
-1 if the plugin cannot be successfully loaded. The caller plugin init() callback should return a negative error code as well.
Plugins should call this function in their init() callback to avoid later crashes if lazy symbol resolution is used by the upper layer that loaded hwloc (e.g. OpenCL implementations using dlopen with RTLD_LAZY).
- Note
- The build system must define HWLOC_INSIDE_PLUGIN if and only if building the caller as a plugin.
-
This function should remain inline so plugins can call it even when they cannot find libhwloc symbols.
void hwloc_report_os_error |
( |
const char * |
msg, |
|
|
int |
line |
|
) |
| |
Report an insertion error from a backend.
|
|
|