module_init函数底层原理
一直以来写linux驱动,都是按照固定格式,定义一个初始化和推出函数,书上告诉我这两个函数会被调用,至于为什么会被调用,在哪调用,一直不清楚。 偶然的一个机会,看到blob里面的代码,里面有一个初始化函数列表。按照一般的编程想法,各部分的初始化函数会在一个固定的函数里调用比如:
void init(void)
{
init_a();
init_b();
...
}
如果再加入一个初始化函数呢,那么再init_b()后面再加一行:
init_c();
这样确实能完成我们的功能,但这样有一定的问题,就是不能独立的添加初始化函数,每次添加一个新的函数都要修改init函数,blob中的初始化函数就是完全独立的,只要用一个宏来修饰一下:
void init_a(void)
{
}
__initlist(init_a, 1);
它是通过这个宏来实现初始化函数列表的呢? 先来看__i
共有 0 条评论