summaryrefslogtreecommitdiff
path: root/scripts/kconfig/lkc_overview
Side-by-side diff
Diffstat (limited to 'scripts/kconfig/lkc_overview') (more/less context) (ignore whitespace changes)
-rw-r--r--scripts/kconfig/lkc_overview111
1 files changed, 111 insertions, 0 deletions
diff --git a/scripts/kconfig/lkc_overview b/scripts/kconfig/lkc_overview
new file mode 100644
index 0000000..e9db60e
--- a/dev/null
+++ b/scripts/kconfig/lkc_overview
@@ -0,0 +1,111 @@
+Introduction
+------------
+
+The configuration database is collection of configuration options
+organized in a tree structure:
+
+ +- Code maturity level options
+ | +- Prompt for development and/or incomplete code/drivers
+ +- General setup
+ | +- Networking support
+ | +- System V IPC
+ | +- BSD Process Accounting
+ | +- Sysctl support
+ +- Loadable module support
+ | +- Enable loadable module support
+ | +- Set version information on all module symbols
+ | +- Kernel module loader
+ +- ...
+
+Every entry has its own dependencies. These dependencies are used
+to determine the visible of an entry. Any child entry is only
+visible if its parent entry is also visible.
+
+Menu entries
+------------
+
+A single configuration option is defined like this:
+
+config MODVERSIONS
+ bool "Set version information on all module symbols"
+ depends MODULES
+ help
+ Usually, modules have to be recompiled whenever you switch to a new
+ kernel. ...
+
+Every line starts with a key word and can be followed by multiple arguments.
+"config" starts a new config entry. The following lines define attributes
+for this config option. Attributes can be the type of the config option,
+input prompt, dependencies, help text and default values. A config option
+can be defined multiple times, but every definition can have only a single
+input prompt and the type must not conflict.
+
+Menu dependencies
+-----------------
+
+Dependencies define the visibility of a menu entry. When a dependency
+exprecession evaluates not to 'n', the entry is visible. Additionally
+the dependency limits the input range of tristate choice symbols.
+
+Menu structure
+--------------
+
+The position of a menu entry in the tree is determined in two ways. First
+it can be specified explicitely:
+
+menu "Network device support"
+ depends NET
+
+config NETDEVICES
+ ...
+
+endmenu
+
+All entries within the "menu" ... "endmenu" block become a submenu of
+"Processor type and features". All subentries have the same dependencies
+than the menu entry, e.g. this means the dependency "NET" is added to the
+dependencies of the option NETDEVICES.
+The other way to generate the menu structure is done by analyzing the
+dependencies. If a menu entry somehow depends on the previous entry, it
+can be made a submenu of it.
+
+config MODULES
+ bool "Enable loadable module support"
+
+config MODVERSIONS
+ bool "Set version information on all module symbols"
+ depends MODULES
+
+comment "module support disabled"
+ depends !MODULES
+
+MODVERSIONS directly depends on MODULES, this means it's only visible if
+MODULES is different from 'n'. The comment on the other hand is always
+visible when MODULES it's visible (the dependency of MODULES are part
+of the comment dependencies).
+
+Menu attributes
+---------------
+
+A menu attribute can have a number of attributes. Not all of them are
+applicable everywhere (see spec).
+Input prompt: Every menu entry can have at most one menu entry, which
+is used to display to the user. An input prompt is either defined with
+"prompt" or it can be defined with the type.
+Type definition: Every config option must have a type, known types are
+currently: bool, tristate, string, hex, integer.
+Default value: It's possible to assign a config option a default value.
+This default is always used, when the option wasn't explicitly set by
+the user. This means it's either used as default value for input prompts
+or the value is saved to the kernel configuration. Multiple default
+values can be specified and every one has it's own dependencies. If
+multiple default values are visible, the first defined one is active.
+A default is not limited to a single menu entry, this means the default
+doesn't has to be defined with a input prompt, but it can also be
+overridden by prepend it with another definition.
+Dependencies: Dependencies can be either defined with "depends", then
+there are applied to all attributes of a menu entry, or attribute
+specific dependencies can be defined with "if", which immediately
+follows the attribute.
+
+