/* linux/include/module.h
#define module_init(x) __initcall(x);
/* linux/include/init.h, line=85 */
#define __initcall(fn) device_initcall(fn)
linux/include/init.h
#define pure_initcall(fn) __define_initcall(fn, 0)
#define core_initcall(fn) __define_initcall(fn, 1)
#define core_initcall_sync(fn) __define_initcall(fn, 1s)
#define postcore_initcall(fn) __define_initcall(fn, 2)
#define postcore_initcall_sync(fn) __define_initcall(fn, 2s)
#define arch_initcall(fn) __define_initcall(fn, 3)
#define arch_initcall_sync(fn) __define_initcall(fn, 3s)
#define subsys_initcall(fn) __define_initcall(fn, 4)
#define subsys_initcall_sync(fn) __define_initcall(fn, 4s)
#define fs_initcall(fn) __define_initcall(fn, 5)
#define fs_initcall_sync(fn) __define_initcall(fn, 5s)
#define rootfs_initcall(fn) __define_initcall(fn, rootfs)
#define device_initcall(fn) __define_initcall(fn, 6) //device_initcall也是个宏,但是我们发现,__define_initcall不同之处是第二个参数。由上到下依次增加
#define device_initcall_sync(fn) __define_initcall(fn, 6s)
#define late_initcall(fn) __define_initcall(fn, 7)
#define late_initcall_sync(fn) __define_initcall(fn, 7s)
常用的module_init()
實際上優先權是6(device_initcall(fn)
的id是6),所以如果有人用了比module_init()
還要前面的,那他就會比較早被載入,反之依然。
对应的数字0是最高优先级执行的,7是最低优先级执行