I2C子系统之内核中I2C子系统的结构(2)

#define __define_initcall(level,fn,id) \        static initcall_t __initcall_##fn##id __used \       __attribute__((__section__(".initcall" level ".init"))) = fn      /*   * Early initcalls run before initializing SMP.   *   * Only for built-in code, not modules.   */   #define early_initcall(fn)      __define_initcall("early",fn,early)       /*   * A "pure" initcall has no dependencies on anything else, and purely   * initializes variables that couldn't be statically initialized.   *   * This only exists for built-in code, not for modules.   */   #define pure_initcall(fn)       __define_initcall("0",fn,0)       #define core_initcall(fn)       __define_initcall("1",fn,1)    #define core_initcall_sync(fn)      __define_initcall("1s",fn,1s)    #define postcore_initcall(fn)       __define_initcall("2",fn,2)    #define postcore_initcall_sync(fn)  __define_initcall("2s",fn,2s)    #define arch_initcall(fn)       __define_initcall("3",fn,3)    #define arch_initcall_sync(fn)      __define_initcall("3s",fn,3s)    #define subsys_initcall(fn)     __define_initcall("4",fn,4)    #define subsys_initcall_sync(fn)    __define_initcall("4s",fn,4s)    #define fs_initcall(fn)         __define_initcall("5",fn,5)    #define fs_initcall_sync(fn)        __define_initcall("5s",fn,5s)    #define rootfs_initcall(fn)     __define_initcall("rootfs",fn,rootfs)    #define device_initcall(fn)     __define_initcall("6",fn,6)    #define device_initcall_sync(fn)    __define_initcall("6s",fn,6s)    #define late_initcall(fn)       __define_initcall("7",fn,7)    #define late_initcall_sync(fn)      __define_initcall("7s",fn,7s)       #define __initcall(fn) device_initcall(fn)       ... ...   #define module_init(x)    __initcall(x);   

这里就可以发现,在实际的驱动中,初始化函数都有如下形式:module_init(init_func)

原来module_init就是一个宏,可以发现module_init宏最终展开后会将init_func函数做个

initcall6.init的标记,最终此函数就被链接在此initcall6.init的位置,而那些序号大initcall6.init的函数

则存放在被module_init修饰的函数之前的位置。

Makefile文件的控制

i2c子系统的相关源码集中在/driver/i2c目录下

所以此处只从/driver/i2c目录下的Makefile文件分析

/driver/i2c/Makefile:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/dd312a504482348b978235244198adb0.html