Subject: Re: Question about modules
To: Julio M. Merino Vidal <>
From: Quentin Garnier <>
List: tech-kern
Date: 08/28/2005 17:26:01
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

On Sun, Aug 28, 2005 at 05:17:10PM +0200, Julio M. Merino Vidal wrote:
> On 8/28/05, Hans Petter Selasky <> wrote:
> > Hi,
> >=20
> > On FreeBSD they use the "__section__" attribute to do linking magic. Bu=
t on
> > NetBSD I am completely lost :-)
> >=20
> > 1) What is the logic behind linking modules?
> >=20
> > # pwd
> > /usr/src/sys/lkm/vfs/adosfs
> >=20
> > # ls
> > CVS             Makefile        lkminit_vfs.c
> >                                 ^^^ is there some
> >                        magic hidden in this filename?
> >=20
> > From where is the following function called:
> >=20
> > adosfs_lkmentry
> I guess this is because the structure defined by the MOD_VFS
> macro, whose name is _module.  See sys/lkm.h.
> After the structure is defined with a known name, the kernel
> can access it, get the vfs operations structure and call the
> vfs_init function from there.

Not really.  That part is done through DISPATCH().

> > Is this function also called when the module is
> > in the kernel ?
> If "this function" means vfs_init, then yes, it is called during
> system startup as a result of the VFS_ATTACH macro.

"This function" is adofs_lkmentry.

The entry point address is passed to the kernel by modload(8) as
part of the LKM API.

> > 2) Where is PSEUDO_SET defined?
> Dunno; is that something FreeBSD specific?  The comment in
> net/net_osdep.h that includes PSEUDO_SET in it may be of
> help.

That's very likely to be FreeBSD stuff.  Definitely not NetBSD stuff

Remember that the NetBSD kernel doesn't include a linker, so modload(8)
spawns ld(1) which does the actual linking and then modload(8) copies
the resulting binary to the kernel.

Quentin Garnier - -
"When I find the controls, I'll go where I like, I'll know where I want
to be, but maybe for now I'll stay right here on a silent sea."
KT Tunstall, Silent Sea, Eye to the Telescope, 2004.

Content-Type: application/pgp-signature
Content-Disposition: inline

Version: GnuPG v1.2.6 (NetBSD)