Linux内核源码中Kconfig文件介绍

内核配置脚本文件的语法也比较简单, 主要包括如下几个方面

(1)、配置选项
大多数内核配置选项都对应Kconfig中的一个配置选项(config):

config MODVERSIONS
       bool "Module versioning support"
       help
           Usually, you have to use modules compiled with your kernel.
           Saying Y here makes it ...

“config”关键字定义新的配置选项,之后的几行代码定义了该配置选项的属性。配置选项的属性包括
类型、数据范围、输入提示、依赖关系、选择关系及帮助信息、默认值等。

每个配置选项都必须指定类型,类型包括bool、tristate、string、hex和int,其中tristate和string是两种基本类型, 其他类型都基于这两种基本类型。类型定义后可以紧跟输入提示,下面两段脚本是等价的:

bool “Networking support”

bool
prompt "Networking support"

输入提示的一般格式为:

prompt <prompt> [if <expr>]

其中, 可选的if用来表示该提示的依赖关系。

默认值的格式为:
default <expr> [if <expr>]
如果用户不设置对应的选项, 配置选项的值就是默认值。
依赖关系的格式为:

depends on( 或者requires) <expr>

如果定义了多重依赖关系, 它们之间用“&&”间隔。 依赖关系也可以应用到该菜单中所有的其他选项
( 同样接受if表达式) 内, 下面两段脚本是等价的:

bool "foo" if BAR
default y if BAR

depends on BAR
bool "foo"
default y

选择关系( 也称为反向依赖关系) 的格式为:

select <symbol> [if <expr>]

A如果选择了B, 则在A被选中的情况下, B自动被选中。
数据范围的格式为:

range <symbol> <symbol> [if <expr>]

帮助信息的格式为:
help( 或---help---)
开始

........

结束
帮助信息完是靠文本缩进识别结束。“---help---”和“help”在作用上没有区别, 设计“---help---”的初衷在于将文件中的配置逻辑与给开发人员的提示分开。
(2)、菜单结构

配置选项在菜单树结构中的位置可由两种方法决定。 第一种方式为:

menu "Network device support"
     depends on NET
config NETDEVICES
…
endmenu

所有处于“menu”和“endmenu”之间的配置选项都会成为“Network device support”的子菜单, 而且, 所有子菜单( config) 选项都会继承父菜单( menu) 的依赖关系, 比如, “Network device support”对“NET”的依赖会被加到配置选项NETDEVICES的依赖列表中。

注意: menu后面跟的“Network device support”项仅仅是1个菜单, 没有对应真实的配置选项, 也不具备3种不同的状态。 这是它和config的区别。

用Kconfig配置脚本和Makefile脚本编写的更详细信息, 可以分别参见内核文档Documentation目录内的
kbuild子目录下的Kconfig-language.txt和Makefiles.txt文件。

爱编程-编程爱好者经验分享平台

文章评论

  

版权所有 爱编程 © Copyright 2012. w2bc.com. All Rights Reserved.
闽ICP备12017094号-3