Back to home page

OSCL-LXR

 
 

    


0001 #!/bin/sh
0002 # SPDX-License-Identifier: GPL-2.0
0003 # description: Generic dynamic event - add/remove eprobe events
0004 # requires: dynamic_events events/syscalls/sys_enter_openat "<attached-group>.<attached-event> [<args>]":README
0005 
0006 echo 0 > events/enable
0007 
0008 clear_dynamic_events
0009 
0010 SYSTEM="syscalls"
0011 EVENT="sys_enter_openat"
0012 FIELD="filename"
0013 EPROBE="eprobe_open"
0014 OPTIONS="file=+0(\$filename):ustring"
0015 echo "e:$EPROBE $SYSTEM/$EVENT $OPTIONS" >> dynamic_events
0016 
0017 grep -q "$EPROBE" dynamic_events
0018 test -d events/eprobes/$EPROBE
0019 
0020 echo 1 > events/eprobes/$EPROBE/enable
0021 ls
0022 echo 0 > events/eprobes/$EPROBE/enable
0023 
0024 content=`grep '^ *ls-' trace | grep 'file='`
0025 nocontent=`grep '^ *ls-' trace | grep 'file=' | grep -v -e '"/' -e '"."' -e '(fault)' ` || true
0026 
0027 if [ -z "$content" ]; then
0028         exit_fail
0029 fi
0030 
0031 if [ ! -z "$nocontent" ]; then
0032         exit_fail
0033 fi
0034 
0035 echo "-:$EPROBE" >> dynamic_events
0036 
0037 ! grep -q "$EPROBE" dynamic_events
0038 ! test -d events/eprobes/$EPROBE
0039 
0040 # test various ways to remove the probe (already tested with just event name)
0041 
0042 # With group name
0043 echo "e:$EPROBE $SYSTEM/$EVENT $OPTIONS" >> dynamic_events
0044 grep -q "$EPROBE" dynamic_events
0045 test -d events/eprobes/$EPROBE
0046 echo "-:eprobes/$EPROBE" >> dynamic_events
0047 ! grep -q "$EPROBE" dynamic_events
0048 ! test -d events/eprobes/$EPROBE
0049 
0050 # With group name and system/event
0051 echo "e:$EPROBE $SYSTEM/$EVENT $OPTIONS" >> dynamic_events
0052 grep -q "$EPROBE" dynamic_events
0053 test -d events/eprobes/$EPROBE
0054 echo "-:eprobes/$EPROBE $SYSTEM/$EVENT" >> dynamic_events
0055 ! grep -q "$EPROBE" dynamic_events
0056 ! test -d events/eprobes/$EPROBE
0057 
0058 # With just event name and system/event
0059 echo "e:$EPROBE $SYSTEM/$EVENT $OPTIONS" >> dynamic_events
0060 grep -q "$EPROBE" dynamic_events
0061 test -d events/eprobes/$EPROBE
0062 echo "-:$EPROBE $SYSTEM/$EVENT" >> dynamic_events
0063 ! grep -q "$EPROBE" dynamic_events
0064 ! test -d events/eprobes/$EPROBE
0065 
0066 # With just event name and system/event and options
0067 echo "e:$EPROBE $SYSTEM/$EVENT $OPTIONS" >> dynamic_events
0068 grep -q "$EPROBE" dynamic_events
0069 test -d events/eprobes/$EPROBE
0070 echo "-:$EPROBE $SYSTEM/$EVENT $OPTIONS" >> dynamic_events
0071 ! grep -q "$EPROBE" dynamic_events
0072 ! test -d events/eprobes/$EPROBE
0073 
0074 # With group name and system/event and options
0075 echo "e:$EPROBE $SYSTEM/$EVENT $OPTIONS" >> dynamic_events
0076 grep -q "$EPROBE" dynamic_events
0077 test -d events/eprobes/$EPROBE
0078 echo "-:eprobes/$EPROBE $SYSTEM/$EVENT $OPTIONS" >> dynamic_events
0079 ! grep -q "$EPROBE" dynamic_events
0080 ! test -d events/eprobes/$EPROBE
0081 
0082 # Finally make sure what is in the dynamic_events file clears it too
0083 echo "e:$EPROBE $SYSTEM/$EVENT $OPTIONS" >> dynamic_events
0084 LINE=`sed -e '/$EPROBE/s/^e/-/' < dynamic_events`
0085 test -d events/eprobes/$EPROBE
0086 echo "-:eprobes/$EPROBE $SYSTEM/$EVENT $OPTIONS" >> dynamic_events
0087 ! grep -q "$EPROBE" dynamic_events
0088 ! test -d events/eprobes/$EPROBE
0089 
0090 if grep -q "e\[:\[<group>/]\[<event>]]" README; then
0091         echo "e:mygroup/ $SYSTEM/$EVENT $OPTIONS" >> dynamic_events
0092         test -d events/mygroup
0093         echo "-:mygroup/" >> dynamic_events
0094         ! test -d events/mygroup
0095 fi
0096 
0097 clear_trace