forked from OpenSDV/Linux_Kernel_map4vehicle
*import_cflow
This commit is contained in:
parent
afabbd3cfb
commit
7b2acc71bd
55
srcxray.py
55
srcxray.py
|
@ -404,8 +404,10 @@ def leaves(dg):
|
||||||
|
|
||||||
def most_used(dg, ins=10, outs=10):
|
def most_used(dg, ins=10, outs=10):
|
||||||
# return {a: b for a, b in sorted(dg.in_degree, key=lambda k: k[1]) if b > 1 and}
|
# return {a: b for a, b in sorted(dg.in_degree, key=lambda k: k[1]) if b > 1 and}
|
||||||
return [(x, dg.in_degree(x), dg.out_degree(x)) for x in dg.nodes()
|
# return [(x, dg.in_degree(x), dg.out_degree(x))
|
||||||
if dg.in_degree(x) > ins and dg.out_degree(x) > outs]
|
return [x
|
||||||
|
for x in dg.nodes()
|
||||||
|
if dg.in_degree(x) >= ins and dg.out_degree(x) >= outs]
|
||||||
|
|
||||||
|
|
||||||
def starts(dg): # roots
|
def starts(dg): # roots
|
||||||
|
@ -466,40 +468,63 @@ def cflow_preprocess(a):
|
||||||
r"compat_sys_\1(", s)
|
r"compat_sys_\1(", s)
|
||||||
s = re.sub(r"SYSCALL_DEFINE[0-9]\((\w*),", r"sys_\1(", s)
|
s = re.sub(r"SYSCALL_DEFINE[0-9]\((\w*),", r"sys_\1(", s)
|
||||||
s = re.sub(r"__setup\(.*,(.*)\)", r"void __setup() {\1();}", s)
|
s = re.sub(r"__setup\(.*,(.*)\)", r"void __setup() {\1();}", s)
|
||||||
s = re.sub(r"early_param\(.*,(.*)\)",
|
s = re.sub(r"^(\w*)param\(.*,(.*)\)", r"void \1param() {\2();}", s)
|
||||||
r"void early_param() {\1();}", s)
|
s = re.sub(r"(\w*)initcall\((.*)\)",
|
||||||
s = re.sub(r"rootfs_initcall\((.*)\)",
|
r"void \1initcall() {\2();}", s)
|
||||||
r"void rootfs_initcall() {\1();}", s)
|
|
||||||
s = re.sub(r"^static ", "", s)
|
s = re.sub(r"^static ", "", s)
|
||||||
s = re.sub(r"__read_mostly", "", s)
|
# s = re.sub(r"__read_mostly", "", s)
|
||||||
s = re.sub(r"^inline ", "", s)
|
s = re.sub(r"^inline ", "", s)
|
||||||
s = re.sub(r"^const ", "", s)
|
s = re.sub(r"^const ", "", s)
|
||||||
s = re.sub(r"^struct (.*) =", r"\1()", s)
|
s = re.sub(r"^struct (.*) =", r"\1()", s)
|
||||||
s = re.sub(r"^struct ", "", s)
|
s = re.sub(r"^struct ", "", s)
|
||||||
|
# __attribute__
|
||||||
# for line in sys.stdin:
|
# for line in sys.stdin:
|
||||||
sys.stdout.write(s)
|
sys.stdout.write(s)
|
||||||
|
|
||||||
|
|
||||||
def import_cflow(a=None):
|
cflow_param = {
|
||||||
|
"modifier": "__init __inline__ noinline __initdata __randomize_layout __read_mostly asmlinkage "
|
||||||
|
" __visible __init __leaf__ __ref",
|
||||||
|
"wrapper": "__attribute__ __section__ "
|
||||||
|
"TRACE_EVENT MODULE_AUTHOR MODULE_DESCRIPTION MODULE_LICENSE MODULE_LICENSE MODULE_SOFTDEP "
|
||||||
|
"__acquires __releases __ATTR"
|
||||||
|
# "wrapper": "__setup early_param"
|
||||||
|
}
|
||||||
|
|
||||||
|
# export CPATH=:include:arch/x86/include:../build/include/:../build/arch/x86/include/generated/:include/uapi
|
||||||
|
# srcxray.py "'\n'.join(cflow('init/main.c'))"
|
||||||
|
|
||||||
|
|
||||||
|
def cflow(a):
|
||||||
|
arg = a
|
||||||
if not a:
|
if not a:
|
||||||
# arg = "$(find -name '*.[ch]' -o -name '*.cpp' -o -name '*.hh')"
|
# arg = "$(find -name '*.[ch]' -o -name '*.cpp' -o -name '*.hh')"
|
||||||
arg = "*.c *.h *.cpp *.hh "
|
arg = "*.c *.h *.cpp *.hh "
|
||||||
|
arg = " $(cat cscope.files)"
|
||||||
elif isinstance(a, list):
|
elif isinstance(a, list):
|
||||||
pass
|
pass
|
||||||
elif os.path.isdir(a):
|
elif os.path.isdir(a):
|
||||||
pass
|
pass
|
||||||
elif os.path.isfile(a):
|
elif os.path.isfile(a):
|
||||||
arg = a
|
|
||||||
pass
|
pass
|
||||||
|
# "--depth=%d " %(level_limit+1) +
|
||||||
|
# --debug=1
|
||||||
|
cflow = (r"cflow -v "
|
||||||
|
# + "-DCONFIG_KALLSYMSZ "
|
||||||
|
+ "--preprocess='srcxray.py cflow_preprocess' "
|
||||||
|
+ ''.join([''.join(["--symbol={0}:{1} ".format(w, p)
|
||||||
|
for w in cflow_param[p].split()])
|
||||||
|
for p in cflow_param.keys()])
|
||||||
|
+ " --include=_sxt --brief --level-indent='0=\t' "
|
||||||
|
+ a)
|
||||||
|
return popen(cflow)
|
||||||
|
|
||||||
|
|
||||||
|
def import_cflow(a=None):
|
||||||
cf = my_graph()
|
cf = my_graph()
|
||||||
stack = list()
|
stack = list()
|
||||||
nprev = -1
|
nprev = -1
|
||||||
# "--depth=%d " %(level_limit+1) +
|
for line in cflow(a):
|
||||||
cflow = (r"cflow " +
|
|
||||||
"--preprocess='srcxray.py cflow_preprocess' " +
|
|
||||||
"--include=_sxt --brief --level-indent='0=\t' " +
|
|
||||||
arg)
|
|
||||||
for line in popen(cflow):
|
|
||||||
# --print-level
|
# --print-level
|
||||||
m = re.match(r'^([\t]*)([^(^ ^<]+)', str(line))
|
m = re.match(r'^([\t]*)([^(^ ^<]+)', str(line))
|
||||||
if m:
|
if m:
|
||||||
|
|
Loading…
Reference in New Issue