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

    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、《神魔幻境》全民来偷桃仙园玩法大剖析1252
  2. 2、《奇葩说女神来了》新版本华丽上线礼包享不停969
  3. 3、大掌门新玩法第九人首曝PK更精彩1986
  4. 4、好友一起战神域《永恒仙域》视频通关苍穹神域4485
  5. 5、横版格斗哪家强《龙与精灵》PK《影之刃》873
  6. 6、《航海王强者之路》给退隐船长的一封信1945
  7. 7、《世界2风暴帝国》新版今日上线致敬童年乐趣不断1272
  8. 8、特大喜讯《刀剑乱舞-ONLINE-》预约人数突破100万476
  9. 9、中超联赛悬念再起来《热血中超》开启亚冠征程3527
  10. 10、《十万个大魔王》狩猎升级BOSS进行时4188
全部评论(0)
我也有话说
0
收藏
点赞
顶部