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 and is the only one 32grep -q $PLACE enabled_functions 33cnt=`cat enabled_functions | wc -l` 34if [ $cnt -ne $((ocnt + 1)) ]; then 35 exit_fail 36fi 37 38echo 1 > events/fprobes/myevent2/enable 39# It should till be the only attached function 40cnt=`cat enabled_functions | wc -l` 41if [ $cnt -ne $((ocnt + 1)) ]; then 42 exit_fail 43fi 44 45echo 1 > events/fprobes/myevent3/enable 46# If the function is different, the attached function should be increased 47grep -q $PLACE2 enabled_functions 48cnt=`cat enabled_functions | wc -l` 49if [ $cnt -ne $((ocnt + 2)) ]; then 50 exit_fail 51fi 52 53echo 0 > events/fprobes/myevent2/enable 54echo "-:myevent2" >> dynamic_events 55 56grep -q myevent1 dynamic_events 57! grep -q myevent2 dynamic_events 58 59# should still have 2 left 60cnt=`cat enabled_functions | wc -l` 61if [ $cnt -ne $((ocnt + 2)) ]; then 62 exit_fail 63fi 64 65echo 0 > events/fprobes/enable 66echo > dynamic_events 67 68# Should have none left 69cnt=`cat enabled_functions | wc -l` 70if [ $cnt -ne $ocnt ]; then 71 exit_fail 72fi 73 74echo "f:myevent4 $PLACE" >> dynamic_events 75 76echo 1 > events/fprobes/myevent4/enable 77# Should only have one enabled 78cnt=`cat enabled_functions | wc -l` 79if [ $cnt -ne $((ocnt + 1)) ]; then 80 exit_fail 81fi 82 83echo 0 > events/fprobes/enable 84echo > dynamic_events 85 86# Should have none left 87cnt=`cat enabled_functions | wc -l` 88if [ $cnt -ne $ocnt ]; then 89 exit_fail 90fi 91 92clear_trace 93