Re: Drivers statically linked in the wrong order

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

 



> How can I get the I2C bus driver to be linked before the main driver? I've 
> tried re-ordering things in Makefiles, but nothing I've tried seems to make 
> any difference.

Hi,

there are 2 levels of ordering;
1) the initcall level
2) the Makefile order

at equal initcall level, the Makefile order really is the order that
matters, however... if there is not the same initcall level, then that
level overrules. 

So to your problem, you have 2 choices
1) try to fix the makefile issue some more (will fail if there are
different initcall levels)
2) Use initcall levels yourself...

see
#define core_initcall(fn)               __define_initcall("1",fn)
#define postcore_initcall(fn)           __define_initcall("2",fn)
#define arch_initcall(fn)               __define_initcall("3",fn)
#define subsys_initcall(fn)             __define_initcall("4",fn)
#define fs_initcall(fn)                 __define_initcall("5",fn)
#define device_initcall(fn)             __define_initcall("6",fn)
#define late_initcall(fn)               __define_initcall("7",fn)

in include/linux.init.h

iirc a normal module_init() is over type "device_initcall", so you can
make your must-be-last one a late_initcall(), or your "must be first" a
subsys_initcall....

(note: you can use late_initcall() and friends instead of module_init;
for the module case these get defined to be module_init() anyway, so no
need for ugly ifdefs in your drivers)

Does this help?

Greetings,
   Arjan van de Ven

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux