for (fn = initcall_levels[level]; fn < initcall_levels[level+1]; fn++) do_one_initcall(*fn); } 从上述代码可见,在函数的最后是一个for循环结构,该循环的操作对象为函数指针,且会将对应的函数指针传递到do_one_initcall中,在该函数则会执行函数指针所指向的函数: 三、构造section并添加函数 (3-1)...
__initcall_start是在 arch目录中的相关CPU中的vmlinux.lds文件指定,如i386中位于arch/i386/vmlinux.lds中,至于在__initcall_start和__initcall_end之间的是由函数声明__init指定 2. 察看/arch/i386/vmlinux.lds,发现一段代码 __initcall_start = .; .initcall.init : { *(.initcall.init) } __initcall_...
do_one_initcall(*fn); } 从上述代码可见,在函数的最后也是一个for循环结构,该循环的操作对象为函数指针,且会将对应的函数指针传递到do_one_initcall中,在该函数执行函数指针所指向的函数: 三、构造section并添加函数 (3-1)构造初始化调用section 在linux内核中,不同架构(ARCH)下的kernel目录中,都会有一个名为...
路径:linux-3.10.x\init\main.c start_kernel()-->rest_init()-->kernel_init()-->kernel_init_freeable()-->do_basic_setup()-->do_initcalls()-->do_initcall_level()-->do_one_initcall() do_initcalls()将按顺序从由__initcall_start开始,到__initcall_end结束的section中以函数指针的形式取出这...
* For backwards compatibility, initcall() puts the call in * the device init subsection. * * The `id' arg to __define_initcall() is needed so that multiple initcalls * can point at the same handler without causing duplicate-symbol build errors. ...
[<ffffffff810001dd>] do_one_initcall+0x3d/0x180 [<ffffffff810bdbfb>] do_init_module+0x6b/0x1d0 [<ffffffff810c089e>] load_module+0x6fe/0x7e0 [<ffffffff810c0aeb>] sys_init_module+0x9b/0xc0 [<ffffffff815ad229>] system_call_fastpath+0x16/0x1b ...
首先从spi驱动的检测函数进行分析: staticints3c24xx_spi_probe(structplatform_device*pdev) { structs3c24xx_spi*hw; structspi_master*master; structspi_board_info*bi; structresource*res; interr=0; inti; /*pi_alloc_master函数申请了structspi_master+structs3c24xx_spi大小的数据, ...
do_one_initcall(*fn); } 在arch/arm/kernel/vmlinux.lds中: __initcall_start = .; *(.initcallearly.init)__early_initcall_end= .; *(.initcall0.init) *(.initcall0s.init) *(.initcall1.init) *(.initcall1s.init) *(.initcall2.init) *(.initcall2s.init)*(.initcall3.init)*(.initcall...
20:fs_initcall(dynamic_debug_init_debugfs); 这个函数会在kernel启动的时候执行,在/sys/kernel/debug下创建目录dynamic_debug,然后在dynamic_debug下面创建control节点,并将这个节点的操作函数集设置为ddebug_proc_fops。 1:staticconststructfile_operations ddebug_proc_fops = { ...
[<ffffffff810001dd>] do_one_initcall+0x3d/0x180 [<ffffffff810bdbfb>] do_init_module+0x6b/0x1d0 [<ffffffff810c089e>] load_module+0x6fe/0x7e0 [<ffffffff810c0aeb>] sys_init_module+0x9b/0xc0 [<ffffffff815ad229>] system_call_fastpath+0x16/0x1b ...