Hardware Locality (hwloc): Miscellaneous objects

Hardware Locality (hwloc) 1.11.13

Miscellaneous objects

hwloc topologies may be annotated with Misc objects (of type `HWLOC_OBJ_MISC`) either automatically or by the user. This is an flexible way to annotate topologies with large sets of information since Misc objects may be inserted anywhere in the topology (to annotate specific objects or parts of the topology), even below other Misc objects, and each of them may contain multiple attributes (see also How do I annotate the topology with private notes?).

These Misc objects may have a `Type` info attribute to replace `Misc` with something else in the lstopo output.

# Misc objects added by hwloc

hwloc only uses Misc objects when other object types are not sufficient. This currently includes:

- Memory modules (DIMMs), on Linux when privileged and when `dmi-sysfs` is supported by the kernel, and when I/O discovery is enabled. These objects have a `Type` info attribute of value `MemoryModule`. They are currently always attached to the root object. Their attributes describe the DIMM vendor, model, etc. `lstopo -v` displays them as:
  Misc(MemoryModule) (P#1 Type=MemoryModule DeviceLocation="Bottom-Slot 2(right)" BankLocation="BANK 2" Vendor=Elpida SerialNumber=21733667 AssetTag=9876543210 PartNumber="EBJ81UG8EFU0-GN-F ")
- Displaying process binding in `lstopo --top`. These objects have a `Type` info attribute of value `Process` and a name attribute made of their PID and program name. They are attached below the object they are bound to. The textual `lstopo` displays them as:
  PU L#0 (P#0)
  Misc(Process) 4445 myprogram

# Annotating topologies with Misc objects

The user may annotate hwloc topologies with its own Misc objects. A Misc object may be inserted anywhere in the topology by specifying its CPU set (using `hwloc_topology_insert_misc_object_by_cpuset()`). Or it may be inserted as a leaf of the topology by specifying its parent (with `hwloc_topology_insert_misc_object_by_parent()`).