blob: ea6fc7209d39edec9c0219f1fa8b402e1c3807c4 [file] [log] [blame] [edit]
# Loads a Kconfig and a .config and prints a symbol.
#
# Usage:
#
# $ make [ARCH=<arch>] scriptconfig SCRIPT=Kconfiglib/examples/print_sym_info.py SCRIPT_ARG=<name>
#
# Example output for SCRIPT_ARG=MODULES:
#
# menuconfig MODULES
# bool
# prompt "Enable loadable module support"
# option modules
# help
# Kernel modules are small pieces of compiled code which can
# be inserted in the running kernel, rather than being
# permanently built into the kernel. You use the "modprobe"
# tool to add (and sometimes remove) them. If you say Y here,
# many parts of the kernel can be built as modules (by
# answering M instead of Y where indicated): this is most
# useful for infrequently used options which are not required
# for booting. For more information, see the man pages for
# modprobe, lsmod, modinfo, insmod and rmmod.
#
# If you say Y here, you will need to run "make
# modules_install" to put the modules under /lib/modules/
# where modprobe can find them (you may need to be root to do
# this).
#
# If unsure, say Y.
#
# value = n
# visibility = y
# currently assignable values: n, y
# defined at init/Kconfig:1674
import sys
from kconfiglib import Kconfig, TRI_TO_STR
if len(sys.argv) < 3:
sys.exit('Pass symbol name (without "CONFIG_" prefix) with SCRIPT_ARG=<name>')
kconf = Kconfig(sys.argv[1])
sym = kconf.syms[sys.argv[2]]
print(sym)
print("value = " + sym.str_value)
print("visibility = " + TRI_TO_STR[sym.visibility])
print("currently assignable values: " +
", ".join([TRI_TO_STR[v] for v in sym.assignable]))
for node in sym.nodes:
print("defined at {}:{}".format(node.filename, node.linenr))