1.不加上 __init会不会有什么影响呢?
我想是不会的,系统依然可以正常运做
2.加上init的目的是希望将相同类似只执行过一次之后
就再也用不到的code放在同一个section,而且是在4K
boundry上面,这样子在开完机的最后就可以把这一区块
free掉,变成可以再利用
3.不是加上__init就会使这个函式只被执行一次
是因为这个函式只会被执行一次,所以才加上init让他执行完
可以被一起free掉
※ 引述《gn00618777 (非常念旧)》之铭言:
: ※ [本文转录自 C_and_CPP 看板 #1JnJQ54O ]
: 作者: gn00618777 (非常念旧) 看板: C_and_CPP
: 标题: [问题] __initdata 和 __init
: 时间: Tue Jul 15 22:11:13 2014
: 在 kernel 的程式里看到函式有 __initdata 以及 __init 属性
: 上网查了一下,只要函式加了这两个,代表函式只会执行一次之后就被丢出
: 内存...函式里面的东西会放在.init.text的section中 ←这什么鬼= =?
: =====================================================================
: 以下为 kernel porting 的范围 也是关于C语言
: static struct i2c_board_info __initdata am335x_i2c0_boardinfo[] 和
: static struct i2c_board_info am335x_i2c1_boardinfo[],为啥有分 __initdata 和
: 没有 __initidata? 有啥差别吗? 假设我device都不在 i2c0 上,我可以直接将
: static struct i2c_board_info __initdata am335x_i2c0_boardinfo[] 改成
: static struct i2c_board_info __initdata am335x_i2c1_boardinfo[] 吗?
: 加了__initdata 的初始化 i2c1 的函式执行过后,上面的devices就不能透过i2c1了吗?
: 谢谢。