1#!/bin/sh 2# SPDX-License-Identifier: GPL-2.0 3# description: event trigger - test histogram trigger 4# requires: set_event events/sched/sched_process_fork/trigger events/sched/sched_process_fork/hist 5# flags: instance 6 7fail() { #msg 8 echo $1 9 exit_fail 10} 11 12echo "Test histogram basic trigger" 13 14echo 'hist:keys=parent_pid:vals=child_pid' > events/sched/sched_process_fork/trigger 15for i in `seq 1 10` ; do ( echo "forked" > /dev/null); done 16grep parent_pid events/sched/sched_process_fork/hist > /dev/null || \ 17 fail "hist trigger on sched_process_fork did not work" 18grep child events/sched/sched_process_fork/hist > /dev/null || \ 19 fail "hist trigger on sched_process_fork did not work" 20 21reset_trigger 22 23echo "Test histogram with compound keys" 24 25echo 'hist:keys=parent_pid,child_pid' > events/sched/sched_process_fork/trigger 26for i in `seq 1 10` ; do ( echo "forked" > /dev/null); done 27grep '^{ parent_pid:.*, child_pid:.*}' events/sched/sched_process_fork/hist > /dev/null || \ 28 fail "compound keys on sched_process_fork did not work" 29 30reset_trigger 31 32echo "Test histogram with string key" 33 34echo 'hist:keys=parent_comm' > events/sched/sched_process_fork/trigger 35for i in `seq 1 10` ; do ( echo "forked" > /dev/null); done 36COMM=`cat /proc/$$/comm` 37grep "parent_comm: $COMM" events/sched/sched_process_fork/hist > /dev/null || \ 38 fail "string key on sched_process_fork did not work" 39 40reset_trigger 41 42echo "Test histogram with sym modifier" 43 44echo 'hist:keys=call_site.sym' > events/kmem/kmalloc/trigger 45for i in `seq 1 10` ; do ( echo "forked" > /dev/null); done 46grep '{ call_site: \[[0-9a-f][0-9a-f]*\] [_a-zA-Z][_a-zA-Z]* *}' events/kmem/kmalloc/hist > /dev/null || \ 47 fail "sym modifier on kmalloc call_site did not work" 48 49reset_trigger 50 51echo "Test histogram with sym-offset modifier" 52 53echo 'hist:keys=call_site.sym-offset' > events/kmem/kmalloc/trigger 54for i in `seq 1 10` ; do ( echo "forked" > /dev/null); done 55grep '{ call_site: \[[0-9a-f][0-9a-f]*\] [_a-zA-Z][_a-zA-Z]*+0x[0-9a-f][0-9a-f]*' events/kmem/kmalloc/hist > /dev/null || \ 56 fail "sym-offset modifier on kmalloc call_site did not work" 57 58reset_trigger 59 60echo "Test histogram with sort key" 61 62echo 'hist:keys=parent_pid,child_pid:sort=child_pid.ascending' > events/sched/sched_process_fork/trigger 63for i in `seq 1 10` ; do ( echo "forked" > /dev/null); done 64 65check_inc() { 66 while [ $# -gt 1 ]; do 67 [ $1 -gt $2 ] && return 1 68 shift 1 69 done 70 return 0 71} 72check_inc `grep -o "child_pid:[[:space:]]*[[:digit:]]*" \ 73 events/sched/sched_process_fork/hist | cut -d: -f2 ` || 74 fail "sort param on sched_process_fork did not work" 75 76exit 0 77