#! /bin/sh

# This is a roundabout test of kernel.statement().

set -e

fn="do_readv_writev@fs/read_write.c"
var="file"

fullfn=`stap $@ -wp2 -e 'probe kernel.statement("'$fn'") {}' | grep kernel | cut -f2 -d'"'`
lineno=`echo $fullfn | cut -f2 -d:`

echo "$0: $fn found, starting line $lineno"

for i in 0 1 2 4 6 10 15 20 25 # some random numbers, not larger than the number of lines in fn
do
    ilineno=`expr $lineno + $i`
    errors=`stap $@ -u -p4 -e 'probe kernel.statement("'$fn':'$ilineno'") {$'$var'}' 2>&1 >/dev/null ||true `
    if echo "$errors" | grep -q unable.to.find.local
    then
	echo "Unexpected error $errors"; exit 1
    fi
    echo 'probe kernel.statement("'$fn':'$ilineno'") {$'$var'}' '#' OK
done
