Date: Thu, 1 Feb 2007 09:16:05 -0800 From: Luigi Rizzo <rizzo@icir.org> To: John Baldwin <jhb@freebsd.org> Cc: freebsd-arch@freebsd.org Subject: Re: configurable device (and other) tables in the kernel ? Message-ID: <20070201091605.A82313@xorpc.icir.org> In-Reply-To: <200702011109.12821.jhb@freebsd.org>; from jhb@freebsd.org on Thu, Feb 01, 2007 at 11:09:12AM -0500 References: <20070131115148.A60420@xorpc.icir.org> <200702011109.12821.jhb@freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20070201091605.A82313>