lttng-get-syscall-inout.sh depends on bash
[lttng-modules.git] / instrumentation / syscalls / lttng-get-syscall-inout.sh
CommitLineData
b7150b71 1#!/bin/bash
b75d00c4
MD
2
3# example usage:
644d6e9c 4# lttng-get-syscall-inout.sh table-syscall-inout.txt select 1
b75d00c4
MD
5
6FILENAME=$1
7SYSCALL_NAME=$2
8ARG_NR=$3
9TMPFILE=inout.tmp.1
10TMPFILE2=inout.tmp.2
11
12if [ x"${FILENAME}" = x"" ]; then
13 echo "Error: Please specify input file name as first argument"
14 exit 1
15fi
16
17if [ x"${SYSCALL_NAME}" = x"" ]; then
18 echo "Error: Please specify system call name as second argument"
19 exit 1
20fi
21
22if [[ x"${ARG_NR}" = x"" || ${ARG_NR} == 0 ]]; then
23 echo "Error: Please specify argument number larger than 0 as 3rd argument"
24 exit 1
25fi
26
27grep "syscall ${SYSCALL_NAME} " ${FILENAME} > ${TMPFILE}
28perl -p -e 's/^syscall ([^ ]*) nbargs ([^ ]*) .*/'\
29'$2/g' ${TMPFILE} > ${TMPFILE2}
30
31NR_MATCH=$(wc -l ${TMPFILE} | perl -p -e 's/^([^ ])*.*/$1/g')
32if [ ${NR_MATCH} -gt 1 ]; then
33 echo "Error: more than one system call match"
34 exit 1
35fi
36
37if [ ${NR_MATCH} -eq 0 ]; then
38 # no match, default to inout
39 echo "sc_inout"
40 exit 0
41fi
42
43SC_ARGS=$(cat ${TMPFILE2})
44
45if [ ${ARG_NR} -gt ${SC_ARGS} ]; then
46 echo "Error: argument number (${ARG_NR}) is larger than number of syscall arguments (${SC_ARGS})"
47 exit 1
48fi
49
50if [ ${ARG_NR} == 1 ]; then
51 perl -p -e 's/^syscall ([^ ]*) nbargs ([^ ]*) rw: \(([^,\)]*).*/$3/g' ${TMPFILE} > ${TMPFILE2}
52fi
53
54if [ ${ARG_NR} == 2 ]; then
55 perl -p -e 's/^syscall ([^ ]*) nbargs ([^ ]*) rw: \([^,]*, ([^,\)]*).*/$3/g' ${TMPFILE} > ${TMPFILE2}
56fi
57
58if [ ${ARG_NR} == 3 ]; then
59 perl -p -e 's/^syscall ([^ ]*) nbargs ([^ ]*) rw: \([^,]*, [^,]*, ([^,\)]*).*/$3/g' ${TMPFILE} > ${TMPFILE2}
60fi
61
62if [ ${ARG_NR} == 4 ]; then
63 perl -p -e 's/^syscall ([^ ]*) nbargs ([^ ]*) rw: \([^,]*, [^,]*, [^,]*, ([^,\)]*).*/$3/g' ${TMPFILE} > ${TMPFILE2}
64fi
65
66if [ ${ARG_NR} == 5 ]; then
67 perl -p -e 's/^syscall ([^ ]*) nbargs ([^ ]*) rw: \([^,]*, [^,]*, [^,]*, [^,]*, ([^,\)]*).*/$3/g' ${TMPFILE} > ${TMPFILE2}
68fi
69
70if [ ${ARG_NR} == 6 ]; then
71 perl -p -e 's/^syscall ([^ ]*) nbargs ([^ ]*) rw: \([^,]*, [^,]*, [^,]*, [^,]*, [^,]*, ([^,\)]*).*/$3/g' ${TMPFILE} > ${TMPFILE2}
72fi
73
74SC_ARG_TYPE=$(cat ${TMPFILE2})
75
76if [ ${SC_ARG_TYPE} = "r" ]; then
77 echo "sc_in"
78fi
79if [ ${SC_ARG_TYPE} = "w" ]; then
80 echo "sc_out"
81fi
82if [ ${SC_ARG_TYPE} = "rw" ]; then
83 echo "sc_inout"
84fi
85
86rm -f ${TMPFILE} ${TMPFILE2}
This page took 0.026879 seconds and 4 git commands to generate.