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了嗎?
: 謝謝。