It is a layer to make it possible to have loadable PCI device drivers.
First you load (with symbols) the pcilkm module, then you can load PCI
drivers that have been compiled to work with pcilkm.
Two examples are provided. 'pcienum', the first one, is a simple
demonstration of how to use pcilkm: it is the basic skeleton of a PCI
driver, and will attach at load time to all PCI devices known to the
system.
The second example 'auich' demonstrates how simple it is to use an
existing driver as a LKM. It simply includes the code for auich(4) and
then adds the necessary pcilkm logic. However there are some drawbacks
that are described in the README file.
- allow vnddetach() to return EBUSY if any vnd's are currently initialised.
lkm:
- add new 'dev' directory, initially with just a 'vnd' LKM. for now, the
vnd lkm driver requests 4 devices....
XXX: vnd should be converted to a psuedo-device that creates & deletes
instances of itself (vnd0, vnd1, etc) when vnconfig -c/-u are called,
then the vnd lkm driver can not be limited to '4' by default.