Cleanup: Remove deprecated TODO file
[lttng-modules.git] / instrumentation / syscalls / lttng-get-syscall-inout.sh
CommitLineData
b7150b71 1#!/bin/bash
b7cdc182 2# SPDX-License-Identifier: (GPL-2.0-only or LGPL-2.1-only)
b75d00c4
MD
3
4# example usage:
644d6e9c 5# lttng-get-syscall-inout.sh table-syscall-inout.txt select 1
b75d00c4
MD
6
7FILENAME=$1
8SYSCALL_NAME=$2
9ARG_NR=$3
2879dbbc
MJ
10TMPFILE=$(mktemp)
11
12# Delete temp file on exit
13trap 'rm -f "$TMPFILE"' EXIT
14
b75d00c4
MD
15
16if [ x"${FILENAME}" = x"" ]; then
2879dbbc 17 echo "Error: Please specify input file name as first argument" >&2
b75d00c4
MD
18 exit 1
19fi
20
21if [ x"${SYSCALL_NAME}" = x"" ]; then
2879dbbc 22 echo "Error: Please specify system call name as second argument" >&2
b75d00c4
MD
23 exit 1
24fi
25
26if [[ x"${ARG_NR}" = x"" || ${ARG_NR} == 0 ]]; then
2879dbbc 27 echo "Error: Please specify argument number larger than 0 as third argument" >&2
b75d00c4
MD
28 exit 1
29fi
30
2879dbbc
MJ
31# Abort on error and undefined variable
32set -eu
33
34# Get the required syscall
35grep "syscall ${SYSCALL_NAME} " "${FILENAME}" > "${TMPFILE}" || true
b75d00c4 36
2879dbbc
MJ
37# Error out if we got more than one syscall
38NR_MATCH=$(wc -l < "${TMPFILE}")
39if [ "${NR_MATCH}" -gt 1 ]; then
40 echo "Error: more than one system call match" >&2
b75d00c4
MD
41 exit 1
42fi
43
2879dbbc
MJ
44# Default to sc_inout for unknown syscalls
45if [ "${NR_MATCH}" -eq 0 ]; then
46 echo "Warning: no match for syscall '${SYSCALL_NAME}', set to 'inout'" >&2
b75d00c4
MD
47 # no match, default to inout
48 echo "sc_inout"
49 exit 0
50fi
51
2879dbbc
MJ
52# Get the number of argument
53SC_ARGS=$(sed 's/^syscall \([^ ]*\) nbargs \([^ ]*\) .*/\2/g' "${TMPFILE}")
b75d00c4 54
2879dbbc
MJ
55if [ "${ARG_NR}" -gt "${SC_ARGS}" ]; then
56 echo "Error: argument number (${ARG_NR}) is larger than number of syscall arguments (${SC_ARGS})" >&2
b75d00c4
MD
57 exit 1
58fi
59
2879dbbc
MJ
60if [ "${ARG_NR}" == 1 ]; then
61 SC_ARG_TYPE=$(sed 's/^syscall \([^ ]*\) nbargs \([^ ]*\) rw: (\([^,)]*\).*/\3/g' "${TMPFILE}")
b75d00c4
MD
62fi
63
2879dbbc
MJ
64if [ "${ARG_NR}" == 2 ]; then
65 SC_ARG_TYPE=$(sed 's/^syscall \([^ ]*\) nbargs \([^ ]*\) rw: ([^,]*, \([^,)]*\).*/\3/g' "${TMPFILE}")
b75d00c4
MD
66fi
67
2879dbbc
MJ
68if [ "${ARG_NR}" == 3 ]; then
69 SC_ARG_TYPE=$(sed 's/^syscall \([^ ]*\) nbargs \([^ ]*\) rw: ([^,]*, [^,]*, \([^,)]*\).*/\3/g' "${TMPFILE}")
b75d00c4
MD
70fi
71
2879dbbc
MJ
72if [ "${ARG_NR}" == 4 ]; then
73 SC_ARG_TYPE=$(sed 's/^syscall \([^ ]*\) nbargs \([^ ]*\) rw: ([^,]*, [^,]*, [^,]*, \([^,)]*\).*/\3/g' "${TMPFILE}")
b75d00c4
MD
74fi
75
2879dbbc
MJ
76if [ "${ARG_NR}" == 5 ]; then
77 SC_ARG_TYPE=$(sed 's/^syscall \([^ ]*\) nbargs \([^ ]*\) rw: ([^,]*, [^,]*, [^,]*, [^,]*, \([^,)]*\).*/\3/g' "${TMPFILE}")
b75d00c4
MD
78fi
79
2879dbbc
MJ
80if [ "${ARG_NR}" == 6 ]; then
81 SC_ARG_TYPE=$(sed 's/^syscall \([^ ]*\) nbargs \([^ ]*\) rw: ([^,]*, [^,]*, [^,]*, [^,]*, [^,]*, \([^,)]*\).*/\3/g' "${TMPFILE}")
b75d00c4
MD
82fi
83
b75d00c4 84
2879dbbc 85if [ "${SC_ARG_TYPE}" = "r" ]; then
b75d00c4
MD
86 echo "sc_in"
87fi
2879dbbc 88if [ "${SC_ARG_TYPE}" = "w" ]; then
b75d00c4
MD
89 echo "sc_out"
90fi
2879dbbc 91if [ "${SC_ARG_TYPE}" = "rw" ]; then
b75d00c4
MD
92 echo "sc_inout"
93fi
94
2879dbbc 95# EOF
This page took 0.034955 seconds and 4 git commands to generate.