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

instance-event.tc (2089B)


      1#!/bin/sh
      2# SPDX-License-Identifier: GPL-2.0
      3# description: Test creation and deletion of trace instances while setting an event
      4# requires: instances
      5
      6fail() { # mesg
      7    rmdir foo 2>/dev/null
      8    echo $1
      9    set -e
     10    exit_fail
     11}
     12
     13cd instances
     14
     15# we don't want to fail on error
     16set +e
     17
     18mkdir x
     19rmdir x
     20result=$?
     21
     22if [ $result -ne 0 ]; then
     23    echo "instance rmdir not supported"
     24    exit_unsupported
     25fi
     26
     27instance_slam() {
     28        while :; do
     29                mkdir foo 2> /dev/null
     30                rmdir foo 2> /dev/null
     31        done
     32}
     33
     34instance_read() {
     35        while :; do
     36                cat foo/trace 1> /dev/null 2>&1
     37        done
     38}
     39
     40instance_set() {
     41        while :; do
     42                echo 1 > foo/events/sched/sched_switch
     43        done 2> /dev/null
     44}
     45
     46instance_slam &
     47p1=$!
     48echo $p1
     49
     50instance_set &
     51p2=$!
     52echo $p2
     53
     54instance_read &
     55p3=$!
     56echo $p3
     57
     58sleep 1
     59
     60kill -1 $p3
     61kill -1 $p2
     62kill -1 $p1
     63
     64echo "Wait for processes to finish"
     65wait $p1 $p2 $p3
     66echo "all processes finished, wait for cleanup"
     67sleep 1
     68
     69mkdir foo
     70ls foo > /dev/null
     71rmdir foo
     72if [ -d foo ]; then
     73        fail "foo still exists"
     74fi
     75
     76mkdir foo
     77echo "schedule:enable_event:sched:sched_switch" > foo/set_ftrace_filter
     78rmdir foo
     79if [ -d foo ]; then
     80        fail "foo still exists"
     81fi
     82if grep -q "schedule:enable_event:sched:sched_switch" ../set_ftrace_filter; then
     83	echo "Older kernel detected. Cleanup filter"
     84	echo '!schedule:enable_event:sched:sched_switch' > ../set_ftrace_filter
     85fi
     86
     87instance_slam() {
     88    while :; do
     89	mkdir x
     90	mkdir y
     91	mkdir z
     92	rmdir x
     93	rmdir y
     94	rmdir z
     95    done 2>/dev/null
     96}
     97
     98instance_slam &
     99p1=$!
    100echo $p1
    101
    102instance_slam &
    103p2=$!
    104echo $p2
    105
    106instance_slam &
    107p3=$!
    108echo $p3
    109
    110instance_slam &
    111p4=$!
    112echo $p4
    113
    114instance_slam &
    115p5=$!
    116echo $p5
    117
    118ls -lR >/dev/null
    119sleep 1
    120
    121kill -1 $p1
    122kill -1 $p2
    123kill -1 $p3
    124kill -1 $p4
    125kill -1 $p5
    126
    127echo "Wait for processes to finish"
    128wait $p1 $p2 $p3 $p4 $p5
    129echo "all processes finished, wait for cleanup"
    130
    131mkdir x y z
    132ls x y z
    133rmdir x y z
    134for d in x y z; do
    135        if [ -d $d ]; then
    136                fail "instance $d still exists"
    137        fi
    138done
    139
    140set -e
    141
    142exit 0