1 #!/bin/sh 2 # SPDX-License-Identifier: GPL-2.0 3 # description: Generic dynamic event - add/remove eprobe events 4 # requires: dynamic_events events/syscalls/sys_enter_openat "<attached-group>.<attached-event> [<args>]":README 5 6 echo 0 > events/enable 7 8 clear_dynamic_events 9 10 SYSTEM="syscalls" 11 EVENT="sys_enter_openat" 12 FIELD="filename" 13 EPROBE="eprobe_open" 14 OPTIONS="file=+0(\$filename):ustring" 15 echo "e:$EPROBE $SYSTEM/$EVENT $OPTIONS" >> dynamic_events 16 17 grep -q "$EPROBE" dynamic_events 18 test -d events/eprobes/$EPROBE 19 20 echo 1 > events/eprobes/$EPROBE/enable 21 ls 22 echo 0 > events/eprobes/$EPROBE/enable 23 24 content=`grep '^ *ls-' trace | grep 'file='` 25 nocontent=`grep '^ *ls-' trace | grep 'file=' | grep -v -e '"/' -e '"."' -e '(fault)' ` || true 26 27 if [ -z "$content" ]; then 28 exit_fail 29 fi 30 31 if [ ! -z "$nocontent" ]; then 32 exit_fail 33 fi 34 35 echo "-:$EPROBE" >> dynamic_events 36 37 ! grep -q "$EPROBE" dynamic_events 38 ! test -d events/eprobes/$EPROBE 39 40 # test various ways to remove the probe (already tested with just event name) 41 42 # With group name 43 echo "e:$EPROBE $SYSTEM/$EVENT $OPTIONS" >> dynamic_events 44 grep -q "$EPROBE" dynamic_events 45 test -d events/eprobes/$EPROBE 46 echo "-:eprobes/$EPROBE" >> dynamic_events 47 ! grep -q "$EPROBE" dynamic_events 48 ! test -d events/eprobes/$EPROBE 49 50 # With group name and system/event 51 echo "e:$EPROBE $SYSTEM/$EVENT $OPTIONS" >> dynamic_events 52 grep -q "$EPROBE" dynamic_events 53 test -d events/eprobes/$EPROBE 54 echo "-:eprobes/$EPROBE $SYSTEM/$EVENT" >> dynamic_events 55 ! grep -q "$EPROBE" dynamic_events 56 ! test -d events/eprobes/$EPROBE 57 58 # With just event name and system/event 59 echo "e:$EPROBE $SYSTEM/$EVENT $OPTIONS" >> dynamic_events 60 grep -q "$EPROBE" dynamic_events 61 test -d events/eprobes/$EPROBE 62 echo "-:$EPROBE $SYSTEM/$EVENT" >> dynamic_events 63 ! grep -q "$EPROBE" dynamic_events 64 ! test -d events/eprobes/$EPROBE 65 66 # With just event name and system/event and options 67 echo "e:$EPROBE $SYSTEM/$EVENT $OPTIONS" >> dynamic_events 68 grep -q "$EPROBE" dynamic_events 69 test -d events/eprobes/$EPROBE 70 echo "-:$EPROBE $SYSTEM/$EVENT $OPTIONS" >> dynamic_events 71 ! grep -q "$EPROBE" dynamic_events 72 ! test -d events/eprobes/$EPROBE 73 74 # With group name and system/event and options 75 echo "e:$EPROBE $SYSTEM/$EVENT $OPTIONS" >> dynamic_events 76 grep -q "$EPROBE" dynamic_events 77 test -d events/eprobes/$EPROBE 78 echo "-:eprobes/$EPROBE $SYSTEM/$EVENT $OPTIONS" >> dynamic_events 79 ! grep -q "$EPROBE" dynamic_events 80 ! test -d events/eprobes/$EPROBE 81 82 # Finally make sure what is in the dynamic_events file clears it too 83 echo "e:$EPROBE $SYSTEM/$EVENT $OPTIONS" >> dynamic_events 84 LINE=`sed -e '/$EPROBE/s/^e/-/' < dynamic_events` 85 test -d events/eprobes/$EPROBE 86 echo "-:eprobes/$EPROBE $SYSTEM/$EVENT $OPTIONS" >> dynamic_events 87 ! grep -q "$EPROBE" dynamic_events 88 ! test -d events/eprobes/$EPROBE 89 90 if grep -q "e\[:\[<group>/]\[<event>]]" README; then 91 echo "e:mygroup/ $SYSTEM/$EVENT $OPTIONS" >> dynamic_events 92 test -d events/mygroup 93 echo "-:mygroup/" >> dynamic_events 94 ! test -d events/mygroup 95 fi 96 97 clear_trace
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.