4 # lttng-get-syscall-inout.sh table-syscall-inout.txt select 1
12 if [ x
"${FILENAME}" = x
"" ]; then
13 echo "Error: Please specify input file name as first argument"
17 if [ x
"${SYSCALL_NAME}" = x
"" ]; then
18 echo "Error: Please specify system call name as second argument"
22 if [[ x
"${ARG_NR}" = x
"" ||
${ARG_NR} == 0 ]]; then
23 echo "Error: Please specify argument number larger than 0 as 3rd argument"
27 grep "syscall ${SYSCALL_NAME} " ${FILENAME} > ${TMPFILE}
28 perl -p -e 's/^syscall ([^ ]*) nbargs ([^ ]*) .*/'\
29 '$2/g' ${TMPFILE} > ${TMPFILE2}
31 NR_MATCH=$(wc -l ${TMPFILE} | perl -p -e 's/^([^ ])*.*/$1/g')
32 if [ ${NR_MATCH} -gt 1 ]; then
33 echo "Error
: more than one system call match
"
37 if [ ${NR_MATCH} -eq 0 ]; then
38 # no match, default to inout
43 SC_ARGS=$(cat ${TMPFILE2})
45 if [ ${ARG_NR} -gt ${SC_ARGS} ]; then
46 echo "Error
: argument number
(${ARG_NR}) is larger than number of syscall arguments
(${SC_ARGS})"
50 if [ ${ARG_NR} == 1 ]; then
51 perl -p -e 's/^syscall ([^ ]*) nbargs ([^ ]*) rw: \(([^,\)]*).*/$3/g' ${TMPFILE} > ${TMPFILE2}
54 if [ ${ARG_NR} == 2 ]; then
55 perl -p -e 's/^syscall ([^ ]*) nbargs ([^ ]*) rw: \([^,]*, ([^,\)]*).*/$3/g' ${TMPFILE} > ${TMPFILE2}
58 if [ ${ARG_NR} == 3 ]; then
59 perl -p -e 's/^syscall ([^ ]*) nbargs ([^ ]*) rw: \([^,]*, [^,]*, ([^,\)]*).*/$3/g' ${TMPFILE} > ${TMPFILE2}
62 if [ ${ARG_NR} == 4 ]; then
63 perl -p -e 's/^syscall ([^ ]*) nbargs ([^ ]*) rw: \([^,]*, [^,]*, [^,]*, ([^,\)]*).*/$3/g' ${TMPFILE} > ${TMPFILE2}
66 if [ ${ARG_NR} == 5 ]; then
67 perl -p -e 's/^syscall ([^ ]*) nbargs ([^ ]*) rw: \([^,]*, [^,]*, [^,]*, [^,]*, ([^,\)]*).*/$3/g' ${TMPFILE} > ${TMPFILE2}
70 if [ ${ARG_NR} == 6 ]; then
71 perl -p -e 's/^syscall ([^ ]*) nbargs ([^ ]*) rw: \([^,]*, [^,]*, [^,]*, [^,]*, [^,]*, ([^,\)]*).*/$3/g' ${TMPFILE} > ${TMPFILE2}
74 SC_ARG_TYPE=$(cat ${TMPFILE2})
76 if [ ${SC_ARG_TYPE} = "r
" ]; then
79 if [ ${SC_ARG_TYPE} = "w
" ]; then
82 if [ ${SC_ARG_TYPE} = "rw
" ]; then
86 rm -f ${TMPFILE} ${TMPFILE2}