Components and Plugins: finding PCI objects during other discoveries

## Typedefs

typedef void * | hwloc_backend_distances_add_handle_t

## Functions

struct hwloc_obj * | hwloc_pci_find_parent_by_busid (struct hwloc_topology *topology, unsigned domain, unsigned bus, unsigned dev, unsigned func)
struct hwloc_obj * | hwloc_pci_find_by_busid (struct hwloc_topology *topology, unsigned domain, unsigned bus, unsigned dev, unsigned func)
hwloc_backend_distances_add_handle_t | hwloc_backend_distances_add_create (hwloc_topology_t topology, const char *name, unsigned long kind, unsigned long flags)
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)
int | hwloc_backend_distances_add_commit (hwloc_topology_t topology, hwloc_backend_distances_add_handle_t handle, unsigned long flags)

## Detailed Description

Note
  These structures and functions may change when HWLOC_COMPONENT_ABI is modified.

## Typedef Documentation

## hwloc_backend_distances_add_handle_t

typedef void* hwloc_backend_distances_add_handle_t

Handle to a new distances structure during its addition to the topology.

## Function Documentation

## 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.

This is similar to hwloc_distances_add_commit() but this variant is designed for backend inserting distances during topology discovery.

## 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.

This is identical to hwloc_distances_add_create() but this variant is designed for backend inserting distances during topology discovery.

## 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.

This is similar to hwloc_distances_add_values() but this variant is designed for backend inserting distances during topology discovery.

The only semantical difference is that `objs` and `values` are not duplicated, but directly attached to the topology. On success, these arrays are given to the core and should not ever be freed by the caller anymore.

## 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.

This is useful for adding specific information about some objects based on their PCI id. When it comes to attaching objects based on PCI locality, hwloc_pci_find_parent_by_busid() should be preferred.

## 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.

When attaching a new object (typically an OS device) whose locality is specified by PCI bus ID, this function returns the PCI object to use as a parent for attaching.

If the exact PCI device with this bus ID exists, it is returned. Otherwise (for instance if it was filtered out), the function returns another object with similar locality (for instance a parent bridge, or the local CPU Package).