序言
所谓Kconfig语法,主要是在linux内核源码中所有目录下的Kconfig脚本文件的语法,而make menuconfig所依赖的正是这些Kconfig文件。
语法简介
单一选项
config CPU_S5PC100
bool "选项名"
select S5P_EXT_INT
select SAMSUNG_DMADEV
help
Enable S5PC100 CPU support
关键字说明:
config CPU_S5PC100 :划分一个配置项CONFIG_CPU_S5PC100
bool “选项名”: bool对应着配置项的可选择状态,只能是 Y or N,不支持编译成ko文件,“选项名” 为该配置项显示的文本标题
"select S5P_EXT_INT": 表示该配置项一旦选中,则关联选中 CONFIG_S5P_EXT_INT 配置项
help:表示该配置项的对应的详细帮助的文本描述
依赖语法
depends on ARM || BLACKFIN || MIPS || COLDFIRE
当上述语句插入到配置项中的话,代表只有当 ARM 等四个配置项至少有一个选中时,配置项才能被选中。
三种选项
config DM9000
tristate "DM9000 support"
关键字说明:
tristate:表示该配置,支持M选项,表示可以编译成ko文件。
选项为数字
config ARM_DMA_IOMMU_ALIGNMENT
int "Maximum PAGE_SIZE order of alignment for DMA IOMMU buffers"
range 4 9 ---->该选项的范围值
default 8 ---->该选项的默认值
help
DMA mapping framework by default aligns all buffers to the smallest
关键字说明:
int:表示该配置项是数值
range 4 9:表示该值的范围
default 8:表示该值的默认值,default y 同样可以表示默认选中
if endif
if ARCH_S5PC100
config CPU_S5PC100
bool "选项名"
select S5P_EXT_INT
select SAMSUNG_DMADEV
help
Enable S5PC100 CPU support
endif
如上述脚本所示, 如果ARCH_S5PC100选项选中了,则在endif范围内的选项才会被选
choice多个选项
choice --->表示选择列表
prompt "Default I/O scheduler" //主目录名字
default DEFAULT_CFQ //默认CFQ
help
Select the I/O scheduler which will be used by default for all
block devices.
config DEFAULT_DEADLINE
bool "Deadline" if IOSCHED_DEADLINE=y
config DEFAULT_CFQ
bool "CFQ" if IOSCHED_CFQ=y
config DEFAULT_NOOP
bool "No-op"
endchoice
choice 是单项选择,就是说DEFAULT_DEADLINE,DEFAULT_CFQ和DEFAULT_NOOP中,只能选中一个。
menu的用法
menu "Boot options" ----> menu表示该选项是不可选的菜单,其后是在选择列表的菜单名
config USE_OF
bool "Flattened Device Tree support"
select IRQ_DOMAIN
select OF
select OF_EARLY_FLATTREE
help
Include support for flattened device tree machine descriptions.
endmenu ----> menu菜单结束
menu中可以有多个选项,同时menu本身也是一个选项,只是这个选项只有选中状态,不可改。
menuconfig的用法
menuconfig MODULES ---> menuconfig表示MODULE是一个可选菜单,其选中后是CONFIG_MODULES
bool "菜单名"
if MODULES
...
endif # MODULES
类似于menu的用法,只是menuconfig是可以选择的菜单,可以选择选中或不选中,而menu则只有选中,不可更改。没有被选中的menuconfig,则其下属的所有选项都是不被选中的。