Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 04 Dec 2002 15:44:29 -0800
From:      Peter Wemm <peter@wemm.org>
To:        Andrew Gallatin <gallatin@cs.duke.edu>
Cc:        "alex" <lex@adelaide.on.net>, "Yoriaki FUJIMORI" <fujimori@ns.fujimori.cache.waseda.ac.jp>, alpha@FreeBSD.ORG
Subject:   Re: link_elf: symbol osf1_wait4 undefined 
Message-ID:  <20021204234429.1E7DE2A8A5@canning.wemm.org>
In-Reply-To: <15854.1646.533496.929062@grasshopper.cs.duke.edu> 

next in thread | previous in thread | raw e-mail | index | archive | help
Andrew Gallatin wrote:
> 
> alex writes:
>  > ahhhh. That solved the problem. 
>  > What is the technical reason for having to load the osf1 module first ?
> 
> Linux/alpha uses the same ABI as OSF/1 for a number of functions,
> since they bootstrapped themselves from OSF/1 on alpha and never
> bothered to go fully native.  This ABI is already provided by our
> osf1.ko module.
> 
> The problem is that the osf1.ko module is SUPPOSED to be automatically
> loaded as a dependancy of the linux module.  I've asked the person who
> wrote the module dependancy code for help on this, but he's moved on
> to other things and has never answered.  If somebody wants to look
> into this, that would be great.  I've never been able to figure it
> out.

This is quite well solved in 5.0:

peter@daintree[3:41pm]~src/sys/alpha/osf1-121> grep MODULE_ *
osf1_sysvec.c:MODULE_VERSION(osf1, 1);
osf1_sysvec.c:MODULE_DEPEND(osf1, sysvmsg, 1, 1, 1);
osf1_sysvec.c:MODULE_DEPEND(osf1, sysvsem, 1, 1, 1);
osf1_sysvec.c:MODULE_DEPEND(osf1, sysvshm, 1, 1, 1);
peter@daintree[3:41pm]~src/sys/alpha/osf1-122> cd ../linux/
peter@daintree[3:42pm]~src/sys/alpha/linux-123> grep MODULE_ *
linux_sysvec.c:MODULE_VERSION(linux, 1);
linux_sysvec.c:MODULE_DEPEND(linux, osf1, 1, 1, 1);
linux_sysvec.c:MODULE_DEPEND(linux, sysvmsg, 1, 1, 1);
linux_sysvec.c:MODULE_DEPEND(linux, sysvsem, 1, 1, 1);
linux_sysvec.c:MODULE_DEPEND(linux, sysvshm, 1, 1, 1);

ie: linux depends on osf1.  osf1 depends on the sysv* stuff.  linux also
depends on the sysv*.  All the dependency loading happens automatically if
needed.

There is no good solution for 4.x because the dependency system runs at
the file level (rather than module level) and cannot detect when a module
is already in the kernel.

Cheers,
-Peter
--
Peter Wemm - peter@wemm.org; peter@FreeBSD.org; peter@yahoo-inc.com
"All of this is for nothing if we don't go to the stars" - JMS/B5


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-alpha" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20021204234429.1E7DE2A8A5>