Kconfig结构

3.7 Kconfig和Makefile

毫不夸张地说,Kconfig和Makefile是我们浏览内核代码时最为依仗的两个文件。基本上,Linux 内核中每一个目录下边都会有一个Kconfig文件和一个Makefile文件。Kconfig和Makefile就好似一个城市的地图,地图引导我们去 认识一个城市,而Kconfig和Makefile则可以让我们了解一个内核目录下面的结构。在希望研究内核的某个子系统、某个驱动或其他某个部分时,都 有必要首先仔细阅读一下相关目录下的Kconfig和Makefile文件。

2.7.1 Kconfig结构

每种平台对应的目录下面都有一个Kconfig文件,比如arch/i386/Kconfig,该文件通过source语句构建出一个Kconfig树。文件arch/i386/Kconfig的内容片段如下:

 
  1. mainmenu"LinuxKernelConfiguration"
  2. configX86_32
  3. bool
  4. defaulty
  5. help
  6. ThisisLinux'shomeport.Linuxwas originallynativetotheIntel
  7. 386,andrunsonallthelaterx86 processorsincludingtheIntel
  8. 486,586,Pentiums,andvarious instruction-set-compatiblechipsby
  9. AMD,Cyrix,andothers.
  10. ……
  11. source"init/Kconfig"
  12. menu"Processortypeandfeatures"
  13. source"kernel/time/Kconfig"
  14. ……
  15. configKTIME_SCALAR
  16. bool
  17. defaulty

Kconfig的详细语法规则可以参看内核文档Documentation/kbuild/kconfig-language.txt,下面对其简单介绍。

(1)菜单项。

config关键字可以定义一个新的菜单项,比如:

 
  1. configMODVERSIONS
  2. bool"Setversioninformationonallmodulesymbols"
  3. dependsonMODULES
  4. help
  5. Usually,moduleshavetoberecompiled wheneveryouswitchtoanew
  6. kernel....

后面的几行定义了该菜单项的属性,包括类型、依赖关系、选择提示、帮助信息和缺省值等。

类型包括bool、tristate、string、hex和int。bool类型的只能选中或不选中,tristate类型的菜单项多了编译成内核模块的选项。

依赖关系通过"depends on"或"requires"定义,指出此菜单项是否依赖于另外一个菜单项。

帮助信息需要使用"help"或"---help---"指出。

(2)菜单组织结构。

菜单选项通过两种方式组成树状结构。

使用关键字"menu"显式声明为菜单,比如:

 
  1. menu"Busoptions(PCI,PCMCIA,EISA,MCA,ISA)"
  2. configPCI
  3. ……
  4. endmenu

通过依赖关系确定菜单结构,比如:

 
  1. configMODULES
  2. bool"Enableloadablemodulesupport"
  3. configMODVERSIONS
  4. bool"Setversioninformationonallmodulesymbols"
  5. dependsonMODULES
  6. comment"modulesupportdisabled"
  7. dependson!MODULES

MODVERSIONS菜单项依赖于MODULES,所以它就是一个子菜单项。这要求菜单项和它的子菜单项同步显示或不显示。

(3)Kconfig关键字。

Kconfig文件描述了一系列的菜单选项,除帮助信息外,文件中的每一行都以一个关键字开始,主要有config、menuconfig、 choice/endchoice、comments、menu/endmenu、if/endif、source等,它们都可以用于结束一个菜单项,只 有前5个可以用在菜单项定义的开始。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值