Linux核心中 setup的用途

2021-08-02 04:20:59 字數 661 閱讀 1121



在linux核心**中經常會看到__setup,如下所示:

__setup("nfsroot=", nfs_root_setup);

這是乙個巨集,它的定義在include/linux/init.h

#define __setup(str, fn)   __setup_param(str, fn, fn, 0)

我們這裡暫不管__setup_param的具體內容,只要搞清楚 __setup的作用即可。   __setup與linux啟動時的配置引數command line

有關,下面是乙個常見的配置格式:

console=ttysac0,115200 root=nfs nfsroot=192.168.1.9:/source/rootfs initrd=0x10800000,0x14af47

可以看到,該配置裡有nfsroot,它與__setup有何關係?

在乙個一般化的 __setup定義中,

__setup(string, function_handler)

其中string是關鍵字,function_handler是關聯處理函式。__setup只是告訴核心在啟動時輸入串中含有string時,核心要去執行function_handler。

也就是說對於上面的例子,在核心啟動時需要執行nfs_root_setup函式。

linux核心的 setup巨集的學習

第一次看到這個巨集的時候是在 setup root root dev setup 這個巨集是在核心掛載根檔案系統的時候呼叫的 先看 setup的定義 define setup str,fn setup param str,fn,fn,0 然後是 setup param的定義 define setup...

linux3 核心的 setup函式

在核心 中經常會看到 setup函式,這個函式從哪來,到哪去?下面我們逐一分析 例如在i2c驅動中就有這麼乙個setup函式 setup i2c bus omap i2c bus setup 我們先要直到它是從哪來的 看如下 define setup param str,unique id,fn,e...

Linux核心中的list for each

在linux核心原始碼中,經常要對鍊錶進行操作,其中乙個很重要的巨集是list for each entry 意思大體如下 假設只有兩個結點,則第乙個member代表head,list for each entry的作用就是迴圈遍歷每乙個pos中的member子項。巨集list for each e...