我们可以通过 cat /proc/cmdline来获取内核的命令行参数,但是每个参数是怎么在代码解析的, 以slub为例,在源码中有如下代码:
__setup("slub_min_order=", setup_slub_min_order);
__setup("slub_max_order=", setup_slub_max_order);
__setup("slub_min_objects=", setup_slub_min_objects);
__setup("slub_nomerge", setup_slub_nomerge);
static int __init setup_slub_min_order(char *str)
{
get_option(&str, &slub_min_order); <====可以通过get_option函数来获取参数值
return 1;
}
__setup是个宏, 第一个参数为命令行中的字符串,第二个参数为参数的处理函数, 如果命令行参数中有匹配的字符串,则调用相应的处理函数来解析, 进而可以通过命令行参数来控制某些模块的行为。