用户与内核空间数据交换的方式之一:内核启动参数

    Linux      提供了一种通过 bootloader 向其传输启动参数的功能,内核开发者可以通过这种方式来向内核传输数据,从而控制内核启动行为。

通常的使用方式是,定义一个分析参数的函数,而后使用内核提供的宏 __setup把它注册到内核中,该宏定义在 linux/init.h 中,因此要使用它必须包含该头文件:

__setup("para_name=", pa     rs   e_func)

para_name 为参数名,parse_func 为分析参数值的函数,它负责把该参数的值转换成相应的内核变量的值并设置那个内核变量。内核为整数参数值的分析提供了函数 get_op     ti   on 和 get_op  TI ons,前者用于分析参数值为一个整数的情况,而后者用于分析参数值为逗号分割的一系列整数的情况,对于参数值为     字符   串的情况,需要开发者自定义相应的分析函数。在源代码包中的内核程序kern-boot-par     ams   .c 说明了三种情况的使用。该程序列举了参数为一个整数、逗号分割的整数串以及字符串三种情况,读者要想     测试   该程序,需要把该程序拷贝到要使用的内核的源码目录树的一个目录下,为了避免与内核其他部分混淆,作者建议在内核源码树的根目录下创建一个新目录,如 examples,然后把该程序拷贝到 examples 目录下并重新命名为 setup_example.c,并且为该目录创建一个 Makefile 文件:

obj-y = setup_example.o

Makefile 仅许这一行就足够了,然后需要修改源码树的根目录下的 Makefile文件的一行,把下面行

core-y          := usr/

修改为

core-y          := usr/ examples/

注意:如果读者创建的新目录和重新命名的文件名与上面不同,需要修改上面所说 Makefile 文件相应的位置。 做完以上工作就可以按照内核构建步骤去构建新的内核,在构建好内核并设置好lilo或grub为该内核的启动条目后,就可以启动该内核,然后使用lilo或grub的编辑功能为该内核的启动参数行增加如下参数串:

setup_example_int=1234 setup_example_int_array=100,200,300,400 setup_example_string=Thisisa     te   st

当然,该参数串也可以直接写入到lilo或grub的配置文件中对应于该新内核的内核命令行参数串中。读者可以使用其它参数值来测试该功能。

下面是作者系统上使用上面参数行的输出:

setup_example_int=1234

setup_example_int_array=100,200,300,400

setup_example_int_array includes 4 intergers

setup_example_string=Thisisatest

读者可以使用$dmesg | grep setup  来查看该程序的输出。

//filename: kern-boot-pa     ram   s.c
#include



用户与内核空间数据交换的方式之一:内核启动参数_设计制作_光电显示
99
81
0
79

相关资讯

  1. 1、侠客文化再来袭!《骆驼客3弓魂传》4月5日电影频道首播3076
  2. 2、这才叫生死相随《银河护卫队》“毁灭者”要跟着滚导投奔DC2431
  3. 3、星爷配上王宝强,最强喜剧诞生,两人合作进军今年贺岁片2886
  4. 4、95岁斯坦李成功摆脱监护人的控制,已重新开始创作超级英雄4654
  5. 5、长江七号里那个油头富二代,长大居然美成这样,不输徐娇!1448
  6. 6、《三体》电影版立项原著作者非编剧传张番番执导4294
  7. 7、为给张伦硕生娃,钟丽缇尝试试管婴儿,身材走形女人味丝毫不减1246
  8. 8、“五一档”电影总票房超8亿!票价降了!13部影片扎堆上映,你看了哪部?445
  9. 9、辞演的都大火,主演的都扑街,论眼光差谁能比得上黄晓明?2159
  10. 10、《毒液》11月2日上映北美创历史新高影评人观众口碑两极3895
全部评论(0)
我也有话说
0
收藏
点赞
顶部