我們可以通過 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是個宏, 第一個參數爲命令行中的字符串,第二個參數爲參數的處理函數, 如果命令行參數中有匹配的字符串,則調用相應的處理函數來解析, 進而可以通過命令行參數來控制某些模塊的行爲。