Back to home page

OSCL-LXR

 
 

    


0001 #!/bin/sh
0002 # SPDX-License-Identifier: GPL-2.0
0003 # description: event trigger - test histogram trigger
0004 # requires: set_event events/sched/sched_process_fork/trigger events/sched/sched_process_fork/hist
0005 # flags: instance
0006 
0007 fail() { #msg
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 [ $# -gt 1 ]; do
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