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 19# Make sure the event is attached and is the only one 20grep -q $PLACE enabled_functions 21cnt=`cat enabled_functions | wc -l` 22if [ $cnt -ne $((ocnt + 1)) ]; then 23 exit_fail 24fi 25 26echo "f:myevent2 $PLACE%return" >> dynamic_events 27 28# It should till be the only attached function 29cnt=`cat enabled_functions | wc -l` 30if [ $cnt -ne $((ocnt + 1)) ]; then 31 exit_fail 32fi 33 34# add another event 35echo "f:myevent3 $PLACE2" >> dynamic_events 36 37grep -q $PLACE2 enabled_functions 38cnt=`cat enabled_functions | wc -l` 39if [ $cnt -ne $((ocnt + 2)) ]; then 40 exit_fail 41fi 42 43grep -q myevent1 dynamic_events 44grep -q myevent2 dynamic_events 45grep -q myevent3 dynamic_events 46test -d events/fprobes/myevent1 47test -d events/fprobes/myevent2 48 49echo "-:myevent2" >> dynamic_events 50 51grep -q myevent1 dynamic_events 52! grep -q myevent2 dynamic_events 53 54# should still have 2 left 55cnt=`cat enabled_functions | wc -l` 56if [ $cnt -ne $((ocnt + 2)) ]; then 57 exit_fail 58fi 59 60echo > dynamic_events 61 62# Should have none left 63cnt=`cat enabled_functions | wc -l` 64if [ $cnt -ne $ocnt ]; then 65 exit_fail 66fi 67 68echo "f:myevent4 $PLACE" >> dynamic_events 69 70# Should only have one enabled 71cnt=`cat enabled_functions | wc -l` 72if [ $cnt -ne $((ocnt + 1)) ]; then 73 exit_fail 74fi 75 76echo > dynamic_events 77 78# Should have none left 79cnt=`cat enabled_functions | wc -l` 80if [ $cnt -ne $ocnt ]; then 81 exit_fail 82fi 83 84clear_trace 85