[ 注:核心版本linux-2.6.30 ]
parse_cmdline的主要作用是用來解析命令列引數。
其實現原理:乙個無窮迴圈,首先來查詢第乙個空格,如果找到,來空格之前的字串是否與early_param相匹配,如果是,則通過實現的功能函式來找出其體引數。如果找到字串的末尾或cmdline的長度大於預設長度,則跳出迴圈。
其定義在:arch/armkernel/setup.c
其實現**如下:
下面,對**進行詳細分析:
line 439: extern struct early_params __early_begin, __early_end; [arch/arm/include/asm/setup.h ]
struct early_params ;
這兩個引數定義在arch/arm/kernel/vmlinux.ld.s檔案中。如下所示:
__early_begin = .;
*(.early_param.init)
__early_end = .;
其中能被插入此段的資料由:__early_param [ arch/arm/include/asm/setup.h ]來定義。
在linux-2.6.30中,有如下字元被__early_param定義:
./arch/arm/kernel/setup.c:__early_param("mem=", early_mem);
./arch/arm/mm/init.c:__early_param("initrd=", early_initrd);
./arch/arm/mm/mmu.c:__early_param("cachepolicy=", early_cachepolicy);
./arch/arm/mm/mmu.c:__early_param("nocache", early_nocache);
./arch/arm/mm/mmu.c:__early_param("nowb", early_nowrite);
./arch/arm/mm/mmu.c:__early_param("ecc=", early_ecc);
./arch/arm/mm/mmu.c:__early_param("vmalloc=", early_vmalloc);
line 443: strlen(p->arg);
arg 的定義是:const char *arg, 所以這樣求得的長度為包含的字元個數。
Linux中的時鐘概念Linux中的時鐘概念
linux的時鐘中斷中涉及至二個全域性變數乙個是xtime,另乙個則是jiffies。有乙個與時間有關的時鐘 實時時鐘 rtc 這是乙個硬體時鐘,用來持久存放系統時間,系統關閉後靠主機板上的微型電池保持計時。系統啟動時,核心 通過讀取rtc來初始化wall time,並存放在xtime變數中,即xt...
Linux 中 的程序
1.fork 與vfork 的區別 vfork 使用中父子程序共享虛擬記憶體空間,fork 則不是 vfork保證子程序先執行 而fork的父子程序執行順序是不定的,它取決於核心的排程演算法 example 1 include include include int main else printf...
linux中的查詢
無論在哪個作業系統,查詢都是常用操作,本文說一下linux中的查詢。1.find find最常用,引數也一大把,舉個最常用的 find type f name c exec grep l 這個就是在當前目錄 查詢所有含有 字串的c程式原始檔,通過這個例子,大家應該會用了。find功能很強大,有興趣自...