1 #!/bin/sh 1 #!/bin/sh 2 # perf trace enum augmentation tests 2 # perf trace enum augmentation tests 3 # SPDX-License-Identifier: GPL-2.0 3 # SPDX-License-Identifier: GPL-2.0 4 4 5 err=0 5 err=0 6 set -e 6 set -e 7 7 8 syscall="landlock_add_rule" 8 syscall="landlock_add_rule" 9 non_syscall="timer:hrtimer_init,timer:hrtimer_ 9 non_syscall="timer:hrtimer_init,timer:hrtimer_start" 10 10 11 TESTPROG="perf test -w landlock" 11 TESTPROG="perf test -w landlock" 12 12 13 # shellcheck source=lib/probe.sh 13 # shellcheck source=lib/probe.sh 14 . "$(dirname $0)"/lib/probe.sh 14 . "$(dirname $0)"/lib/probe.sh 15 skip_if_no_perf_trace || exit 2 15 skip_if_no_perf_trace || exit 2 16 16 17 check_vmlinux() { 17 check_vmlinux() { 18 echo "Checking if vmlinux exists" 18 echo "Checking if vmlinux exists" 19 if ! ls /sys/kernel/btf/vmlinux 1>/dev/null 19 if ! ls /sys/kernel/btf/vmlinux 1>/dev/null 2>&1 20 then 20 then 21 echo "trace+enum test [Skipped missing vml 21 echo "trace+enum test [Skipped missing vmlinux BTF support]" 22 err=2 22 err=2 23 fi 23 fi 24 } 24 } 25 25 26 trace_landlock() { 26 trace_landlock() { 27 echo "Tracing syscall ${syscall}" 27 echo "Tracing syscall ${syscall}" 28 28 29 # test flight just to see if landlock_add_ru 29 # test flight just to see if landlock_add_rule and libbpf are available 30 $TESTPROG 30 $TESTPROG 31 31 32 if perf trace -e $syscall $TESTPROG 2>&1 | \ 32 if perf trace -e $syscall $TESTPROG 2>&1 | \ 33 grep -q -E ".*landlock_add_rule\(ruleset_ 33 grep -q -E ".*landlock_add_rule\(ruleset_fd: 11, rule_type: (LANDLOCK_RULE_PATH_BENEATH|LANDLOCK_RULE_NET_PORT), rule_attr: 0x[a-f0-9]+, flags: 45\) = -1.*" 34 then 34 then 35 err=0 35 err=0 36 else 36 else 37 err=1 37 err=1 38 fi 38 fi 39 } 39 } 40 40 41 trace_non_syscall() { 41 trace_non_syscall() { 42 echo "Tracing non-syscall tracepoint ${non-s 42 echo "Tracing non-syscall tracepoint ${non-syscall}" 43 if perf trace -e $non_syscall --max-events=1 43 if perf trace -e $non_syscall --max-events=1 2>&1 | \ 44 grep -q -E '.*timer:hrtimer_.*\(.*mode: H 44 grep -q -E '.*timer:hrtimer_.*\(.*mode: HRTIMER_MODE_.*\)$' 45 then 45 then 46 err=0 46 err=0 47 else 47 else 48 err=1 48 err=1 49 fi 49 fi 50 } 50 } 51 51 52 check_vmlinux 52 check_vmlinux 53 53 54 if [ $err = 0 ]; then 54 if [ $err = 0 ]; then 55 trace_landlock 55 trace_landlock 56 fi 56 fi 57 57 58 if [ $err = 0 ]; then 58 if [ $err = 0 ]; then 59 trace_non_syscall 59 trace_non_syscall 60 fi 60 fi 61 61 62 exit $err 62 exit $err
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.