内核启动参数
学习了好几种fs后,我们先缓缓,再次了解参数,这次不是模块参数,而是启动参数了,该参数是引导程序bootloader传递给kernel的配置参数,与模块参数一样是只能在初始化加载时使用,交互性弱,功能切换强,属于“不动产”配置,越少修改越好。 使用内核启动参数,需要使用到include/linux/init.h文件里的如下宏: #define __setup(str, fn) \ __setup_param(str, fn, fn, 0) 其中,str为对应的启动参数名,fn是对该传入参数进行处理的函数。 而在Linux内核中也提供了整数参数值对应的处理函数,在lib/cmdline.c文件中有get_option和get_options两人函数的定义,前一个是针对于只有一个整数的情况,后一个则是针对以逗号分隔的一串整数的情况,而对于字符串则需要自行处理了,下面还是先上例子吧,注意这次源码需放至Kernel源码里来编译了,作为启动参数,当然是在内核的最前获取并处理了,还能留到模块加载时再处理吗?除非是获取处理后的值。 下面上代码并说明添加步骤: 1.在Linux Kernel源码下创建slam_boot_example目录: 执行cd ~/linux-3.13.6 && mkdir slam_boot_example命令; 2.在slam_boot_example添加如下文件: a.Makefile文件,内容为obj-y += slam_boot_example.o b.slam_boot_example.c文件,内容如下: #include <linux/kernel.h> #include <linux/init.h> #include <linux/string.h> #define MAX_SLAM_SIZE 5 #define MAX_SLAM_STRING_LEN 16 static int slam_boot_int; static int slam_boot_int_array[MAX_SLAM_SIZE]; static char slam_boot_string[MAX_SLAM_STRING_LEN]; static int __init slam_parse...