bpf(4)).
While doing that, still keep around the full cdevsw interface, so that the
ethfoo interfaces can be accessed either through /dev/ethfooN or through
the cloning device /dev/ethfoo (whose minor number is 0xfffff). Interfaces
created through the cloning device are destroyed at close() time.
Also add an ioctl() to be used by the cloning interface user to know the
minor number of the created interface, so it can be manipulated later to
get an address set and turned up (otherwise EHOSTDOWN is returned on read
and write).
Document some of the new functions, but read, write, ioctl and kqfilter
still has to be commented.
have a device interface to the ethfoo devices through a device node.
select, poll, kqueue and SIGIO are possible on that device node. See TODO
for what remains to be done at that level.
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.
and tweak lkminit_*.c (where applicable) to call them, and to call
sysctl_teardown() when being unloaded.
This consists of (1) making setup functions not be static when being
compiled as lkms (change to sys/sysctl.h), (2) making prototypes
visible for the various setup functions in header files (changes to
various header files), and (3) making simple "load" and "unload"
functions in the actual lkminit stuff.
linux_sysctl.c also needs its root exposed (ie, made not static) for
this (when built as an lkm).
It should only be used by the calling function to create further nodes
in the same function, and of course to save the MIB number, which is what
is done now.
Correct a stupid bug in the ethernet address parsing code. <ashamed face>