Date: Thu, 1 Feb 2007 16:14:48 -0500 From: John Baldwin <jhb@freebsd.org> To: Luigi Rizzo <rizzo@icir.org> Cc: freebsd-arch@freebsd.org Subject: Re: configurable device (and other) tables in the kernel ? Message-ID: <200702011614.48712.jhb@freebsd.org> In-Reply-To: <20070201104506.B82313@xorpc.icir.org> References: <20070131115148.A60420@xorpc.icir.org> <20070201.110206.1102529050.imp@bsdimp.com> <20070201104506.B82313@xorpc.icir.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On Thursday 01 February 2007 13:45, Luigi Rizzo wrote: > On Thu, Feb 01, 2007 at 11:02:06AM -0700, M. Warner Losh wrote: > ... > > : 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 ? > > > > Look at the firmware routines. However, they won't work until / is > > mounted, which is after all the device probing happens. > > unfortunately firmare images are embedded in .ko files, so the loading > is done elsewhere - but ok, i can spend some time figuring out > what LINKER_LOAD_FILE() does and whether it is just plain loading > of the file in memory or more than that, whether it can be made to > work even with an unstructured file, and so on. > > Re. the availability of / - one of the requirements i had written > was the ability to preload the table at compile time - that's the > easy part, in the end it is just some macro/scripting magic to embed > the initial table in the object. > Short of putting into the table some hooks to give control > to the console and ask the user to manually type in > the 'alias ID' you were referring to (in the good old times > maybe someone would have even conceived a 'please type > the full driver image in hex') Why not do what firmware(9) does? You can take a table and turn it into a module and then either load that via the loader or kldload it at runtime (or use linker_reference_module(9) at runtime). Granted, I still think the concept is not really a good idea, but I think firmware(9) is actually a good model for this sort of thing. -- John Baldwin
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200702011614.48712.jhb>