我正在编写一个内核模块,可以使用两个低级选项。这两个选项都可以选择为M / Y / N,但必须至少选择其中一个,否则模块将无法工作。如下所示:
[*] Enable FOO support
<M> Back-end A
<M> Back-end B
我按如下方式编写,但两个子选项都可以取消选择。
config FOO
bool "Enable FOO support"
config BACKEND_A
tristate "Back-end A"
depends on FOO
depends on SUBSYSTEM_X
config BACKEND_B
tristate "Back-end B"
depends on FOO
depends on SUBSYSTEM_Y
如何在kconfig中编写这样的配置?
答案 0 :(得分:1)
假设后端scrollView.setContentOffset(scrollPoint, animated: true)
和A
无法同时加载到内核 ,B
配置条目似乎是最好的:< / p>
choice
config FOO
bool "Enable FOO support"
choice
prompt "Select back-end for FOO"
depends on FOO
config BACKEND_A
tristate "Back-end A"
depends on SUBSYSTEM_X
config BACKEND_B
tristate "Back-end B"
depends on SUBSYSTEM_Y
中描述了choice
的行为:
虽然布尔选项只允许单个配置条目 选中,三态选择也允许任意数量的配置条目 被设定为&#39; m&#39;。如果单个驱动程序有多个,则可以使用此选项 硬件存在,只能编译/加载一个驱动程序 内核,但所有驱动程序都可以编译为模块。
choice
使用tristate
的使用示例:Documentation/kbuild/kconfig-language.txt。
答案 1 :(得分:0)
您可以使FOO
不可编辑,并使用反向依赖项选择它:
config FOO
tristate
menu "FOO support"
config BACKEND_A
tristate "Back-end A"
depends on SUBSYSTEM_X
select FOO
config BACKEND_B
tristate "Back-end B"
depends on SUBSYSTEM_Y
select FOO
endmenu