tech-kern archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

link-sets in modules



There are currently problems loading modules that contain link-sets
(link-sets were the 'flavour of the month' a while back!) because
the link sets don't get processed during module load (and unload)
because they are processed by the initialisation of other code.

I think the following will fix this and thus allow the same driver
object to be run either as a loaded module, or linked into the main
kernel.

1) Add another link-set describing each link-set. At a minumum containing
   the name of the link-set, and functions to process the addition and
   removal of data areas.

2) When the module-loader is loading a module and finds a link-set
   (which is how it finds the module info itself), it searches the
   known link-set processors (from the link-set defined in (1) and
   any added later) and calls the relevant function to proces the
   entries.

I think the link-set functions need initialising after the module's
own initialisation - unless that is a property of the link-set?

The module loader will need to remember the link sets info for
module unload.

That should make it easier to build some bits as modules.

I have an aim that the kernel build be changed slightly:
1) build all the 'modules' *.kmod.
2) run 'config' and compile a kernel that excludes all the modules
   but leave the final link as an 'ld -r' generating a netbsd.o.
3) Link some or all of the *.kmod into netbsd.o
4) A final link generating a fully fixed-up netbsd.
5) Release *.kmod and netbsd.o (as well as netbsd).

This would make it easy to remove a lot of 'unusual' drivers from
the kernel, while still making is easy to add them into a bootable
kernel for systems that need them at boot time.

Thoughts/comments ?

        David

-- 
David Laight: david%l8s.co.uk@localhost


Home | Main Index | Thread Index | Old Index