Date: Mon, 06 Aug 2001 00:24:40 +0100 From: Brian Somers <brian@Awfulhak.org> To: Mike Smith <msmith@FreeBSD.ORG> Cc: Dima Dorfman <dima@unixfreak.org>, Brian Somers <brian@Awfulhak.org>, arch@FreeBSD.ORG, brian@freebsd-services.com, brian@freebsd-services.com Subject: Re: Library routine to load a kld if it already isn't Message-ID: <200108052324.f75NOeu49363@hak.lan.Awfulhak.org> In-Reply-To: Message from Mike Smith <msmith@FreeBSD.ORG> of "Sun, 05 Aug 2001 15:22:45 PDT." <200108052222.f75MMj100826@mass.dis.org>
next in thread | previous in thread | raw e-mail | index | archive | help
> > > > Sharball of the implementation and man page is attached (extract into > > > > src/lib/libc/gen). Comments? Suggestions? > > > > > > This is normally done with: > > > > > > if (modfind("module") == -1 && ID0kldload("module") == -1) > > > errx(); > > > > > > I don't think it's a good idea to change this. > > > > Only it's wrong in some cases. Some modules will have a bus attached > > Please see ifmaybeload() in src/sbin/ifconfig/ifconfig.c. > > I would like to see a library function like kmodule_require(), which would > take a *module* name and version number constrants similar to those taken > by loadable modules themselves. From sys/kern/kern_linker.c: /* * Find a file which contains given module and load it, * if "parent" is not NULL, register a reference to it. */ static int linker_load_module(const char *modname, struct linker_file *parent) { linker_file_t lfdep; const char *filename; char *pathname; int error; /* * There will be a system to look up or guess a file name from * a module name. * For now we just try to load a file with the same name. */ pathname = linker_search_path(modname); ..... I don't think it's right to write an API for something that hasn't been defined yet. I'm not saying kmodule_require() doesn't sound like a good idea, just that someone's going to have to design & write a module -> filename mapping mechanism first (or at the same time). The linker_search_path() function isn't even a sufficient placeholder for that right now -- as Dima has pointed out, modules show up with names such as "bus/driver" rather than just "driver", so linker_search_path() should be able to take "pci/if_fxp" and turn that into "if_fxp" somehow. That's not as trivial as it sounds (not to me anyway - I don't know if/how the module namespace is defined...). > -- > ... every activity meets with opposition, everyone who acts has his > rivals and unfortunately opponents also. But not because people want > to be opponents, rather because the tasks and relationships force > people to take different points of view. [Dr. Fritz Todt] > V I C T O R Y N O T V E N G E A N C E -- Brian <brian@freebsd-services.com> <brian@Awfulhak.org> http://www.freebsd-services.com/ <brian@[uk.]FreeBSD.org> Don't _EVER_ lose your sense of humour ! <brian@[uk.]OpenBSD.org> To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-arch" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200108052324.f75NOeu49363>