162306a36Sopenharmony_ci#!/bin/sh
262306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0
362306a36Sopenharmony_ci# description: event trigger - test histogram modifiers
462306a36Sopenharmony_ci# requires: set_event events/sched/sched_process_fork/trigger events/sched/sched_process_fork/hist
562306a36Sopenharmony_ci# flags: instance
662306a36Sopenharmony_ci
762306a36Sopenharmony_cifail() { #msg
862306a36Sopenharmony_ci    echo $1
962306a36Sopenharmony_ci    exit_fail
1062306a36Sopenharmony_ci}
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_ciecho "Test histogram with execname modifier"
1362306a36Sopenharmony_ci
1462306a36Sopenharmony_ciecho 'hist:keys=common_pid.execname' > events/sched/sched_process_fork/trigger
1562306a36Sopenharmony_cifor i in `seq 1 10` ; do ( echo "forked" > /dev/null); done
1662306a36Sopenharmony_ciCOMM=`cat /proc/$$/comm`
1762306a36Sopenharmony_cigrep "common_pid: $COMM" events/sched/sched_process_fork/hist > /dev/null || \
1862306a36Sopenharmony_ci    fail "execname modifier on sched_process_fork did not work"
1962306a36Sopenharmony_ci
2062306a36Sopenharmony_cireset_trigger
2162306a36Sopenharmony_ci
2262306a36Sopenharmony_ciecho "Test histogram with hex modifier"
2362306a36Sopenharmony_ci
2462306a36Sopenharmony_ciecho 'hist:keys=parent_pid.hex' > events/sched/sched_process_fork/trigger
2562306a36Sopenharmony_cifor i in `seq 1 10` ; do ( echo "forked" > /dev/null); done
2662306a36Sopenharmony_ci# Note that $$ is the parent pid. $PID is current PID.
2762306a36Sopenharmony_ciHEX=`printf %x $PID`
2862306a36Sopenharmony_cigrep "parent_pid: $HEX" events/sched/sched_process_fork/hist > /dev/null || \
2962306a36Sopenharmony_ci    fail "hex modifier on sched_process_fork did not work"
3062306a36Sopenharmony_ci
3162306a36Sopenharmony_cireset_trigger
3262306a36Sopenharmony_ci
3362306a36Sopenharmony_ciecho "Test histogram with syscall modifier"
3462306a36Sopenharmony_ci
3562306a36Sopenharmony_ciecho 'hist:keys=id.syscall' > events/raw_syscalls/sys_exit/trigger
3662306a36Sopenharmony_cifor i in `seq 1 10` ; do ( echo "forked" > /dev/null); done
3762306a36Sopenharmony_cigrep "id: \(unknown_\|sys_\)" events/raw_syscalls/sys_exit/hist > /dev/null || \
3862306a36Sopenharmony_ci    fail "syscall modifier on raw_syscalls/sys_exit did not work"
3962306a36Sopenharmony_ci
4062306a36Sopenharmony_ci
4162306a36Sopenharmony_cireset_trigger
4262306a36Sopenharmony_ci
4362306a36Sopenharmony_ciecho "Test histgram with log2 modifier"
4462306a36Sopenharmony_ci
4562306a36Sopenharmony_ciecho 'hist:keys=bytes_req.log2' > events/kmem/kmalloc/trigger
4662306a36Sopenharmony_cifor i in `seq 1 10` ; do ( echo "forked" > /dev/null); done
4762306a36Sopenharmony_cigrep 'bytes_req: ~ 2^[0-9]*' events/kmem/kmalloc/hist > /dev/null || \
4862306a36Sopenharmony_ci    fail "log2 modifier on kmem/kmalloc did not work"
4962306a36Sopenharmony_ci
5062306a36Sopenharmony_ciexit 0
51