0001
0002
0003
0004
0005
0006
0007 fail() {
0008 echo $1
0009 exit_fail
0010 }
0011
0012 echo "Test histogram basic trigger"
0013
0014 echo 'hist:keys=parent_pid:vals=child_pid' > events/sched/sched_process_fork/trigger
0015 for i in `seq 1 10` ; do ( echo "forked" > /dev/null); done
0016 grep parent_pid events/sched/sched_process_fork/hist > /dev/null || \
0017 fail "hist trigger on sched_process_fork did not work"
0018 grep child events/sched/sched_process_fork/hist > /dev/null || \
0019 fail "hist trigger on sched_process_fork did not work"
0020
0021 reset_trigger
0022
0023 echo "Test histogram with compound keys"
0024
0025 echo 'hist:keys=parent_pid,child_pid' > events/sched/sched_process_fork/trigger
0026 for i in `seq 1 10` ; do ( echo "forked" > /dev/null); done
0027 grep '^{ parent_pid:.*, child_pid:.*}' events/sched/sched_process_fork/hist > /dev/null || \
0028 fail "compound keys on sched_process_fork did not work"
0029
0030 reset_trigger
0031
0032 echo "Test histogram with string key"
0033
0034 echo 'hist:keys=parent_comm' > events/sched/sched_process_fork/trigger
0035 for i in `seq 1 10` ; do ( echo "forked" > /dev/null); done
0036 COMM=`cat /proc/$$/comm`
0037 grep "parent_comm: $COMM" events/sched/sched_process_fork/hist > /dev/null || \
0038 fail "string key on sched_process_fork did not work"
0039
0040 reset_trigger
0041
0042 echo "Test histogram with sym modifier"
0043
0044 echo 'hist:keys=call_site.sym' > events/kmem/kmalloc/trigger
0045 for i in `seq 1 10` ; do ( echo "forked" > /dev/null); done
0046 grep '{ call_site: \[[0-9a-f][0-9a-f]*\] [_a-zA-Z][_a-zA-Z]* *}' events/kmem/kmalloc/hist > /dev/null || \
0047 fail "sym modifier on kmalloc call_site did not work"
0048
0049 reset_trigger
0050
0051 echo "Test histogram with sym-offset modifier"
0052
0053 echo 'hist:keys=call_site.sym-offset' > events/kmem/kmalloc/trigger
0054 for i in `seq 1 10` ; do ( echo "forked" > /dev/null); done
0055 grep '{ 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 || \
0056 fail "sym-offset modifier on kmalloc call_site did not work"
0057
0058 reset_trigger
0059
0060 echo "Test histogram with sort key"
0061
0062 echo 'hist:keys=parent_pid,child_pid:sort=child_pid.ascending' > events/sched/sched_process_fork/trigger
0063 for i in `seq 1 10` ; do ( echo "forked" > /dev/null); done
0064
0065 check_inc() {
0066 while [ $
0067 [ $1 -gt $2 ] && return 1
0068 shift 1
0069 done
0070 return 0
0071 }
0072 check_inc `grep -o "child_pid:[[:space:]]*[[:digit:]]*" \
0073 events/sched/sched_process_fork/hist | cut -d: -f2 ` ||
0074 fail "sort param on sched_process_fork did not work"
0075
0076 exit 0