cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

trigger-hist.tc (2635B)


      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