configurable device (and other) tables in the kernel ?
Luigi Rizzo
rizzo at icir.org
Thu Feb 1 17:16:06 UTC 2007
On Thu, Feb 01, 2007 at 11:09:12AM -0500, John Baldwin wrote:
> On Wednesday 31 January 2007 14:51, Luigi Rizzo wrote:
...
> > We have several tables in our kernel and modules,
> > containing at least device-id tables (pci, usb),
> > quirks for certain devices, and maybe more (i am excluding
...
> Windows and MAC OS X both use plain text files to hold things like PCI device
> IDs to match drivers to devices. OS X uses an XML file format that lets you
plain text files!
too obvious to think of it :)
but, where can i find an example of a piece of kernel code that can
read from a file "safely" (i.e. say in the modevent handler or maybe
at device probe time) ?
Something like
char *load_file_into_kernel_memody(filename, max_size, &error);
I have looked at the kernel side of execve and kldload, they are not
exactly straightforward (at least there are seveal indirections).
Maybe there are other simpler ones ?
> list the PCI ID's a driver supports and the kernel auto-loads driver modules
> by matching on PCI IDs. Many drivers can't be helped by this though, as they
> use the device ID for for device-specific behavior (such as em(4) or
> brgpy(4)).
well, that's a two-phase process, if you have the above table-based
mechanism, the kernel (actually the bus driver i would say) can
load the [device_id -> driver] table (or tables, assuming
each driver has its own file) to select and load the
correct driver, and then the driver itself could use the same
mechanism to load a [device_id -> quirks] table for internal use ?
cheers
luigi
More information about the freebsd-arch
mailing list