blob: 2c1b0f094384e3c5762d48666416f26d164ec802 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
# 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:
#
# config 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:1678
import kconfiglib
import sys
if len(sys.argv) < 3:
print('Pass symbol name (without "CONFIG_" prefix) with SCRIPT_ARG=<name>')
sys.exit(1)
conf = kconfiglib.Config(sys.argv[1])
sym = conf.syms[sys.argv[2]]
print(sym)
print("value = " + sym.value)
print("visibility = " + sym.visibility)
print("currently assignable values: " + ", ".join(sym.assignable))
for node in sym.nodes:
print("defined at {}:{}".format(node.filename, node.linenr))
|