From owner-freebsd-arch@FreeBSD.ORG Thu Feb 1 17:16:06 2007 Return-Path: X-Original-To: freebsd-arch@freebsd.org Delivered-To: freebsd-arch@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 3A21316A40A; Thu, 1 Feb 2007 17:16:06 +0000 (UTC) (envelope-from rizzo@icir.org) Received: from xorpc.icir.org (xorpc.icir.org [192.150.187.68]) by mx1.freebsd.org (Postfix) with ESMTP id 29CD013C491; Thu, 1 Feb 2007 17:16:06 +0000 (UTC) (envelope-from rizzo@icir.org) Received: from xorpc.icir.org (localhost [127.0.0.1]) by xorpc.icir.org (8.12.11/8.13.6) with ESMTP id l11HG51E082464; Thu, 1 Feb 2007 09:16:05 -0800 (PST) (envelope-from rizzo@xorpc.icir.org) Received: (from rizzo@localhost) by xorpc.icir.org (8.12.11/8.12.3/Submit) id l11HG5fG082463; Thu, 1 Feb 2007 09:16:05 -0800 (PST) (envelope-from rizzo) Date: Thu, 1 Feb 2007 09:16:05 -0800 From: Luigi Rizzo To: John Baldwin Message-ID: <20070201091605.A82313@xorpc.icir.org> References: <20070131115148.A60420@xorpc.icir.org> <200702011109.12821.jhb@freebsd.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.2.5.1i In-Reply-To: <200702011109.12821.jhb@freebsd.org>; from jhb@freebsd.org on Thu, Feb 01, 2007 at 11:09:12AM -0500 Cc: freebsd-arch@freebsd.org Subject: Re: configurable device (and other) tables in the kernel ? X-BeenThere: freebsd-arch@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussion related to FreeBSD architecture List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 01 Feb 2007 17:16:06 -0000 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