Re: The magical mystical changing ethernet interface order

From: David S. Miller (davem@redhat.com)
Date: Thu May 08 2003 - 09:54:38 EST


   From: Alan Cox <alan@lxorguk.ukuu.org.uk>
   Date: 08 May 2003 15:55:31 +0100

   Unfortunately for the ISA driver code we *have* to rely on link
   order or rip out the __init stuff and use Space.c type hacks.
   
I do no argue that needing an invocation order is bogus.
I merely disagree with the way we're trying to achieve it.

You don't need Space.c magic, the linker in binutils has mechanisms by
which this can be accomplished and we already use this in 2.5.x

Have a peek at __define_initcall($NUM,fn), imagine it with one more
argument $PRIO. It might look like this:

#define __define_initcall(level,prio,fn) \
        static initcall_t __initcall_##fn __attribute__
        ((unused,__section__ ("\.initcall" level "." prio ".init"))) = fn

Use the 'prio' number to define the ordering. The default for
modules that don't care about relative ordering within a class
use a value like "9999" or something like that.

The only magic is what to do with the vmlinux.lds scripts to
handle this correctly. Are regular expressions allowed in the
section names?
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Thu May 15 2003 - 22:00:28 EST