This MR refactors
pcid by separating it into two binaries: (1)
pcid, which will enumerate the bus and then run as a traditional scheme-based driver daemon, and (2) pcid-spawner, which uses information from the
pci: scheme to find matching drivers from a config file and spawn them. The pipe-based communication mechanism now uses a bidirectional pipe from the
pci: scheme to replace the old
The motivation for this MR is to separate the driver logic from the subdriver spawning logic, and, a PCI scheme will probably also be useful for e.g.
lspci, but mostly to have a better interface when acpid needs to be able to read from/write to PCI configuration space. In the future
pcid-spawner might evolve into a more general driver manager, possibly more closely involved with init. If/when kernel!194 is merged, the scheme can also provide IRQ handles directly from the kernel within a PCI device's "directory".