1#!/bin/sh 2# SPDX-License-Identifier: GPL-2.0 3# description: Generic dynamic event - add/remove fprobe events 4# requires: dynamic_events "f[:[<group>/][<event>]] <func-name>[%return] [<args>]":README 5 6echo 0 > events/enable 7echo > dynamic_events 8 9PLACE=$FUNCTION_FORK 10PLACE2="kmem_cache_free" 11PLACE3="schedule_timeout" 12 13# Some functions may have BPF programs attached, therefore 14# count already enabled_functions before tests start 15ocnt=`cat enabled_functions | wc -l` 16 17echo "f:myevent1 $PLACE" >> dynamic_events 18 19echo "f:myevent2 $PLACE%return" >> dynamic_events 20 21# add another event 22echo "f:myevent3 $PLACE2" >> dynamic_events 23 24grep -q myevent1 dynamic_events 25grep -q myevent2 dynamic_events 26grep -q myevent3 dynamic_events 27test -d events/fprobes/myevent1 28test -d events/fprobes/myevent2 29 30echo 1 > events/fprobes/myevent1/enable 31# Make sure the event is attached. 32grep -q $PLACE enabled_functions 33cnt=`cat enabled_functions | wc -l` 34if [ $cnt -eq $ocnt ]; then 35 exit_fail 36fi 37 38echo 1 > events/fprobes/myevent2/enable 39cnt2=`cat enabled_functions | wc -l` 40 41echo 1 > events/fprobes/myevent3/enable 42# If the function is different, the attached function should be increased 43grep -q $PLACE2 enabled_functions 44cnt=`cat enabled_functions | wc -l` 45if [ $cnt -eq $cnt2 ]; then 46 exit_fail 47fi 48 49echo 0 > events/fprobes/myevent2/enable 50echo "-:myevent2" >> dynamic_events 51 52grep -q myevent1 dynamic_events 53! grep -q myevent2 dynamic_events 54 55echo 0 > events/fprobes/enable 56echo > dynamic_events 57 58# Should have none left 59cnt=`cat enabled_functions | wc -l` 60if [ $cnt -ne $ocnt ]; then 61 exit_fail 62fi 63 64echo "f:myevent4 $PLACE" >> dynamic_events 65 66echo 1 > events/fprobes/myevent4/enable 67# Should only have one enabled 68cnt=`cat enabled_functions | wc -l` 69if [ $cnt -ne $((ocnt + 1)) ]; then 70 exit_fail 71fi 72 73echo 0 > events/fprobes/enable 74echo > dynamic_events 75 76# Should have none left 77cnt=`cat enabled_functions | wc -l` 78if [ $cnt -ne $ocnt ]; then 79 exit_fail 80fi 81 82clear_trace 83