__initdata 和 __init - Linux

Edward Lewis avatar
By Edward Lewis
at 2014-07-16T08:17

Table of Contents



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

--
Tags: Linux

All Comments

Selena avatar
By Selena
at 2014-07-17T01:36
不加__init, 在kernel init stage的時候會跑不到吧?
James avatar
By James
at 2014-07-20T23:47
一開始有一段時間會去init section 逐序跑過裡面
Isabella avatar
By Isabella
at 2014-07-21T01:11
像是一些driver的 __init
Lydia avatar
By Lydia
at 2014-07-25T17:02
樓上正解
Joe avatar
By Joe
at 2014-07-27T13:28
非正解. 可能把 __initcall 相關系列和 __init 搞錯了?
Belly avatar
By Belly
at 2014-08-01T00:06
謝謝各位,其實我想問為何i2c0要加init而i2c1卻不用
Candice avatar
By Candice
at 2014-08-02T06:12
因為i2c0在init階段的註冊動作,會找塊記憶體複製過去,
Frederic avatar
By Frederic
at 2014-08-06T21:15
所以init階段結束後,占用空間可釋放掉.
Caroline avatar
By Caroline
at 2014-08-11T08:11
加了 __init 和 __initdata 就是 init階段結束時, 會被釋放掉.

筆電裡內建的小SSD上 能安裝LINUX嗎?

Agatha avatar
By Agatha
at 2014-07-15T18:04
小弟買了一台samsung series5,有內建24GB SSD跟一般的硬碟 因為有需要 要將系統灌成LINUX UBUNTU 想問一下 有辦法能將UBUNTU灌在這顆24GB的SSD上面嗎? 如果沒辦法 那我安裝完UBUNTU 不知道這顆24GB的SSD能發揮什麼功能? 能存檔案嗎? 謝謝囉 - ...

在 Ubuntu 上面安裝 mainline kernels

Erin avatar
By Erin
at 2014-07-15T14:25
所謂的 mainline kernels 就是在 The Linux Kernel Archives [1] 上面由 Linus Torvalds 本人釋出的版本, 而 Ubuntu 本來有一個 Ubuntu Kernel PPA 專門用來編譯 這些 mainline kernels, 只是後來不曉得為何就不 ...

nftables技術分享@Debian Jessie (I)

Margaret avatar
By Margaret
at 2014-07-15T11:11
: 推 Adama:可以動態開port嗎? 07/13 21:51 : 您所謂的動態開port是指? : 基本上其實可以依照您所使用網路的環境需求, : 來去決定要使用什麼樣的規則, : 只要您自行建立好nftables的rules ...

nftables技術分享@Debian Jessie (II)

Olga avatar
By Olga
at 2014-07-15T06:28
第四章 實作nftables與開機載入規則分享 本章節即將以一實例運作的nftables, 來介紹nftables在Debian Jessie可以如何運作。 我們在測試所使用的這台電腦, 就直接實際測試開機規則載入執行nftables的實測。 4.1 建立nftables規則的方式 nft ...

Slax 7.0.8

Dorothy avatar
By Dorothy
at 2014-07-15T01:08
剛剛在virtualbox上面試了一下 以光碟開機的話 開機後打開dolphin會有個Slax CD 這裡面有slax的程式 但是要自己做格式化把硬碟分配好 我是先用fdisk把硬碟切割以後mkfs -t ext3 /dev/sda1 之後mount -t ext3 /dev/sda1 /media ...