Linux中的parse cmdline詳解

2021-05-27 22:10:10 字數 1197 閱讀 5943

[ 注:核心版本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功能很強大,有興趣自...