55 lines
1.6 KiB
Python
55 lines
1.6 KiB
Python
# 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))
|