176929ab5SMasami Hiramatsu#!/bin/sh 2b2441318SGreg Kroah-Hartman# SPDX-License-Identifier: GPL-2.0 376929ab5SMasami Hiramatsu# description: event trigger - test histogram trigger 43591e90fSMasami Hiramatsu# requires: set_event events/sched/sched_process_fork/trigger events/sched/sched_process_fork/hist 5ca2958f1SSteven Rostedt (VMware)# flags: instance 676929ab5SMasami Hiramatsu 776929ab5SMasami Hiramatsufail() { #msg 876929ab5SMasami Hiramatsu echo $1 942534b1fSMasami Hiramatsu exit_fail 1076929ab5SMasami Hiramatsu} 1176929ab5SMasami Hiramatsu 1243708c0aSFlavio Suligoiecho "Test histogram basic trigger" 1376929ab5SMasami Hiramatsu 1476929ab5SMasami Hiramatsuecho 'hist:keys=parent_pid:vals=child_pid' > events/sched/sched_process_fork/trigger 1576929ab5SMasami Hiramatsufor i in `seq 1 10` ; do ( echo "forked" > /dev/null); done 1676929ab5SMasami Hiramatsugrep parent_pid events/sched/sched_process_fork/hist > /dev/null || \ 1776929ab5SMasami Hiramatsu fail "hist trigger on sched_process_fork did not work" 1876929ab5SMasami Hiramatsugrep child events/sched/sched_process_fork/hist > /dev/null || \ 1976929ab5SMasami Hiramatsu fail "hist trigger on sched_process_fork did not work" 2076929ab5SMasami Hiramatsu 2176929ab5SMasami Hiramatsureset_trigger 2276929ab5SMasami Hiramatsu 2376929ab5SMasami Hiramatsuecho "Test histogram with compound keys" 2476929ab5SMasami Hiramatsu 2576929ab5SMasami Hiramatsuecho 'hist:keys=parent_pid,child_pid' > events/sched/sched_process_fork/trigger 2676929ab5SMasami Hiramatsufor i in `seq 1 10` ; do ( echo "forked" > /dev/null); done 2776929ab5SMasami Hiramatsugrep '^{ parent_pid:.*, child_pid:.*}' events/sched/sched_process_fork/hist > /dev/null || \ 2876929ab5SMasami Hiramatsu fail "compound keys on sched_process_fork did not work" 2976929ab5SMasami Hiramatsu 3076929ab5SMasami Hiramatsureset_trigger 3176929ab5SMasami Hiramatsu 3276929ab5SMasami Hiramatsuecho "Test histogram with string key" 3376929ab5SMasami Hiramatsu 3476929ab5SMasami Hiramatsuecho 'hist:keys=parent_comm' > events/sched/sched_process_fork/trigger 3576929ab5SMasami Hiramatsufor i in `seq 1 10` ; do ( echo "forked" > /dev/null); done 3676929ab5SMasami HiramatsuCOMM=`cat /proc/$$/comm` 3776929ab5SMasami Hiramatsugrep "parent_comm: $COMM" events/sched/sched_process_fork/hist > /dev/null || \ 3876929ab5SMasami Hiramatsu fail "string key on sched_process_fork did not work" 3976929ab5SMasami Hiramatsu 4076929ab5SMasami Hiramatsureset_trigger 4176929ab5SMasami Hiramatsu 42*fa73514dSSteven Rostedt (VMware)echo "Test histogram with sym modifier" 43*fa73514dSSteven Rostedt (VMware) 44*fa73514dSSteven Rostedt (VMware)echo 'hist:keys=call_site.sym' > events/kmem/kmalloc/trigger 45*fa73514dSSteven Rostedt (VMware)for i in `seq 1 10` ; do ( echo "forked" > /dev/null); done 46*fa73514dSSteven Rostedt (VMware)grep '{ call_site: \[[0-9a-f][0-9a-f]*\] [_a-zA-Z][_a-zA-Z]* *}' events/kmem/kmalloc/hist > /dev/null || \ 47*fa73514dSSteven Rostedt (VMware) fail "sym modifier on kmalloc call_site did not work" 48*fa73514dSSteven Rostedt (VMware) 49*fa73514dSSteven Rostedt (VMware)reset_trigger 50*fa73514dSSteven Rostedt (VMware) 51*fa73514dSSteven Rostedt (VMware)echo "Test histogram with sym-offset modifier" 52*fa73514dSSteven Rostedt (VMware) 53*fa73514dSSteven Rostedt (VMware)echo 'hist:keys=call_site.sym-offset' > events/kmem/kmalloc/trigger 54*fa73514dSSteven Rostedt (VMware)for i in `seq 1 10` ; do ( echo "forked" > /dev/null); done 55*fa73514dSSteven Rostedt (VMware)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 || \ 56*fa73514dSSteven Rostedt (VMware) fail "sym-offset modifier on kmalloc call_site did not work" 57*fa73514dSSteven Rostedt (VMware) 58*fa73514dSSteven Rostedt (VMware)reset_trigger 59*fa73514dSSteven Rostedt (VMware) 6076929ab5SMasami Hiramatsuecho "Test histogram with sort key" 6176929ab5SMasami Hiramatsu 6276929ab5SMasami Hiramatsuecho 'hist:keys=parent_pid,child_pid:sort=child_pid.ascending' > events/sched/sched_process_fork/trigger 6376929ab5SMasami Hiramatsufor i in `seq 1 10` ; do ( echo "forked" > /dev/null); done 6476929ab5SMasami Hiramatsu 6576929ab5SMasami Hiramatsucheck_inc() { 6676929ab5SMasami Hiramatsu while [ $# -gt 1 ]; do 6776929ab5SMasami Hiramatsu [ $1 -gt $2 ] && return 1 6876929ab5SMasami Hiramatsu shift 1 6976929ab5SMasami Hiramatsu done 7076929ab5SMasami Hiramatsu return 0 7176929ab5SMasami Hiramatsu} 7276929ab5SMasami Hiramatsucheck_inc `grep -o "child_pid:[[:space:]]*[[:digit:]]*" \ 7376929ab5SMasami Hiramatsu events/sched/sched_process_fork/hist | cut -d: -f2 ` || 7476929ab5SMasami Hiramatsu fail "sort param on sched_process_fork did not work" 7576929ab5SMasami Hiramatsu 7676929ab5SMasami Hiramatsuexit 0 77