kernel_samsung_a53x/scripts
Zhen Lei 9fdbd3eed2 kallsyms: Improve the performance of kallsyms_lookup_name()
Currently, to search for a symbol, we need to expand the symbols in
'kallsyms_names' one by one, and then use the expanded string for
comparison. It's O(n).

If we sort names in ascending order like addresses, we can also use
binary search. It's O(log(n)).

In order not to change the implementation of "/proc/kallsyms", the table
kallsyms_names[] is still stored in a one-to-one correspondence with the
address in ascending order.

Add array kallsyms_seqs_of_names[], it's indexed by the sequence number
of the sorted names, and the corresponding content is the sequence number
of the sorted addresses. For example:
Assume that the index of NameX in array kallsyms_seqs_of_names[] is 'i',
the content of kallsyms_seqs_of_names[i] is 'k', then the corresponding
address of NameX is kallsyms_addresses[k]. The offset in kallsyms_names[]
is get_symbol_offset(k).

Note that the memory usage will increase by (4 * kallsyms_num_syms)
bytes, the next two patches will reduce (1 * kallsyms_num_syms) bytes
and properly handle the case CONFIG_LTO_CLANG=y.

Performance test results: (x86)
Before:
min=234, max=10364402, avg=5206926
min=267, max=11168517, avg=5207587
After:
min=1016, max=90894, avg=7272
min=1014, max=93470, avg=7293

The average lookup performance of kallsyms_lookup_name() improved 715x.

Signed-off-by: Zhen Lei <thunder.leizhen@huawei.com>
Signed-off-by: Luis Chamberlain <mcgrof@kernel.org>
2024-11-19 18:06:35 +01:00
..
atomic Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
basic Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
clang-tools gen_compile_commands: fix invalid escape sequence warning 2024-11-19 08:44:35 +01:00
coccinelle Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
crypto Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
dtc Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
dummy-tools kbuild: dummy-tools: adjust to stricter stackprotector check 2024-11-19 09:23:16 +01:00
fmp Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
gcc-plugins gcc-plugins: Rename last_stmt() for GCC 14+ 2024-11-19 14:19:46 +01:00
gdb Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
genksyms Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
kconfig kconfig: remove wrong expr_trans_bool() 2024-11-19 14:19:47 +01:00
ksymoops Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
lego Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
mod modpost: trim leading spaces when processing source files list 2024-11-18 12:13:29 +01:00
package Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
selinux Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
tracing Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
adjust_autoksyms.sh Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
as-version.sh Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
asn1_compiler.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
bin2c.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
bloat-o-meter Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
bootgraph.pl Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
bpf_helpers_doc.py bpf, scripts: Correct GPL license name 2024-11-18 22:25:41 +01:00
cc-can-link.sh Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
check-sysctl-docs Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
check_extable.sh Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
checkincludes.pl Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
checkkconfigsymbols.py Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
checkpatch.pl Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
checkstack.pl checkstack: fix printed address 2024-11-18 12:11:41 +01:00
checksyscalls.sh Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
checkversion.pl Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
clang-version.sh Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
cleanfile Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
cleanpatch Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
coccicheck Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
config Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
const_structs.checkpatch Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
decode_stacktrace.sh scripts/decode_stacktrace.sh: optionally use LLVM utilities 2024-11-18 12:13:34 +01:00
decodecode Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
depmod.sh Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
dev-needs.sh Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
diffconfig Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
documentation-file-ref-check Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
export_report.pl Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
extract-cert.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
extract-ikconfig Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
extract-module-sig.pl Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
extract-sys-certs.pl Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
extract-vmlinux Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
extract_xc3028.pl Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
faddr2line Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
file-size.sh Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
find-unused-docs.sh Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
gcc-goto.sh Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
gcc-ld Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
gcc-version.sh Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
gcc-x86_32-has-stack-protector.sh x86/stackprotector/32: Make the canary into a regular percpu variable 2024-11-19 09:22:37 +01:00
gcc-x86_64-has-stack-protector.sh Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
gen_autoksyms.sh Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
gen_ksymdeps.sh Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
generate_cfi_kallsyms.pl Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
generate_initcall_order.pl Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
get_abi.pl scripts/get_abi: fix source path leak 2024-11-18 12:12:58 +01:00
get_dvb_firmware Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
get_maintainer.pl Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
gfp-translate Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
headerdep.pl Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
headers_check.pl Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
headers_install.sh Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
insert-sys-cert.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
jobserver-exec Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
kallsyms.c kallsyms: Improve the performance of kallsyms_lookup_name() 2024-11-19 18:06:35 +01:00
Kbuild.include Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
Kconfig.include Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
kernel-doc scripts: kernel-doc: Fix syntax error due to undeclared args variable 2024-11-19 09:22:38 +01:00
ld-version.sh Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
leaking_addresses.pl Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
Lindent Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
link-vmlinux.sh kbuild: fix short log for AS in link-vmlinux.sh 2024-11-19 14:19:43 +01:00
lld-version.sh Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
Makefile Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
Makefile.asm-generic Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
Makefile.build Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
Makefile.clean Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
Makefile.dtbinst kbuild: Install dtb files as 0644 in Makefile.dtbinst 2024-11-19 14:19:34 +01:00
Makefile.extrawarn kbuild: Move -Wenum-{compare-conditional,enum-conversion} into W=1 2024-11-19 09:22:34 +01:00
Makefile.gcc-plugins Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
Makefile.headersinst Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
Makefile.host Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
Makefile.kasan Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
Makefile.kcov Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
Makefile.kcsan Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
Makefile.lib Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
Makefile.modfinal Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
Makefile.modinst Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
Makefile.modpost Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
Makefile.modsign Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
Makefile.package Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
Makefile.ubsan Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
Makefile.userprogs Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
makelst Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
markup_oops.pl Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
mkcompile_h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
mkmakefile Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
mksysmap Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
mkuboot.sh Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
module.lds.S Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
modules-check.sh Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
nsdeps Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
objdiff Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
pahole-flags.sh Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
parse-maintainers.pl Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
patch-kernel Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
profile2linkerlist.pl Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
prune-kernel Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
recordmcount.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
recordmcount.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
recordmcount.pl Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
setlocalversion scripts: Don't append '-dirty' to Kernel name 2024-06-15 16:21:18 -03:00
show_delta Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
sign-file.c sign-file: Fix incorrect return values check 2024-11-18 12:11:49 +01:00
sorttable.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
sorttable.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
spdxcheck-test.sh Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
spdxcheck.py Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
spelling.txt Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
sphinx-pre-install Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
split-man.pl Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
stackdelta Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
stackusage Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
subarch.include Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
tags.sh Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
tools-support-relr.sh Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
unifdef.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
ver_linux Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
xen-hypercalls.sh Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
xz_wrap.sh Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00