[ 注:内核版本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 [ arch/arm/include/asm/setup.h ]来定义。 在Linux-2.6.30中,有如下字符被__early_param定义: ./arch/arm/kernel/setup.c:__early_param("mem=", early_mem); Line 443: strlen(p->arg); arg 的定义是:const char *arg, 所以这样求得的长度为包含的字符个数。 |
|