[Add] 打通Kconfiglib配置操作
This commit is contained in:
54
scripts/kconfig/Kconfiglib/examples/print_sym_info.py
Normal file
54
scripts/kconfig/Kconfiglib/examples/print_sym_info.py
Normal file
@ -0,0 +1,54 @@
|
||||
# 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))
|
||||
Reference in New Issue
Block a user