summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorhunt <hunt>2007-07-16 17:18:38 +0000
committerhunt <hunt>2007-07-16 17:18:38 +0000
commit7f9250cd27a07cf41fd6a5cd1dbd45527f475b15 (patch)
tree3b5b46ddc3aedbefbc7a471ebfcca6221c7e1d19
parente1ae40377570e3a0bfc94c5a9a891d403a5938ee (diff)
downloadsystemtap-steved-7f9250cd27a07cf41fd6a5cd1dbd45527f475b15.tar.gz
systemtap-steved-7f9250cd27a07cf41fd6a5cd1dbd45527f475b15.tar.xz
systemtap-steved-7f9250cd27a07cf41fd6a5cd1dbd45527f475b15.zip
2007-07-16 Martin Hunt <hunt@redhat.com>
* syscalls.stp (compat_sys_fcntl64, compat_sys_fcntl): Add. (compat_sys_fstatfs64): Add. (compat_sys_getdents, compat_sys_getdents64): Add. (compat_sys_ioctl): Add. (compat_sys_io_getevents): Add. (compat_sys_io_setup): Add. (compat_sys_io_submit): Add. * syscalls2.stp (compat_sys_nfsservctl): Add. (sys_openat): Add. (sys_ppoll): Add; (compat_sys_ppoll): Add. (sys32_pread64): Add. (sys32_pwrite32): Add. (sys_pwrite64): Print quoted string. (sys_pselect6, compat_sys_pselect6): Add. (sys_pselect7, compat_sys_pselect7): Add. (compat_sys_old_readdir): Add. (sys_select): Don't try to print fd_sets. (compat_sys_select): Add. (compat_sys_statfs64): Add. * ppc/syscalls.stp: Remove duplicated probes. * aux_syscalls.stp (_nfsctl_cmd_str): New. (_fd_set_u): Removed. Not used.
-rw-r--r--tapset/ChangeLog29
-rw-r--r--tapset/aux_syscalls.stp30
-rw-r--r--tapset/ppc64/syscalls.stp213
-rw-r--r--tapset/syscalls.stp139
-rw-r--r--tapset/syscalls2.stp274
5 files changed, 369 insertions, 316 deletions
diff --git a/tapset/ChangeLog b/tapset/ChangeLog
index 82d7ecbe..61aa305d 100644
--- a/tapset/ChangeLog
+++ b/tapset/ChangeLog
@@ -1,3 +1,32 @@
+2007-07-16 Martin Hunt <hunt@redhat.com>
+
+ * syscalls.stp (compat_sys_fcntl64, compat_sys_fcntl): Add.
+ (compat_sys_fstatfs64): Add.
+ (compat_sys_getdents, compat_sys_getdents64): Add.
+ (compat_sys_ioctl): Add.
+ (compat_sys_io_getevents): Add.
+ (compat_sys_io_setup): Add.
+ (compat_sys_io_submit): Add.
+
+ * syscalls2.stp (compat_sys_nfsservctl): Add.
+ (sys_openat): Add.
+ (sys_ppoll): Add;
+ (compat_sys_ppoll): Add.
+ (sys32_pread64): Add.
+ (sys32_pwrite32): Add.
+ (sys_pwrite64): Print quoted string.
+ (sys_pselect6, compat_sys_pselect6): Add.
+ (sys_pselect7, compat_sys_pselect7): Add.
+ (compat_sys_old_readdir): Add.
+ (sys_select): Don't try to print fd_sets.
+ (compat_sys_select): Add.
+ (compat_sys_statfs64): Add.
+
+ * ppc/syscalls.stp: Remove duplicated probes.
+
+ * aux_syscalls.stp (_nfsctl_cmd_str): New.
+ (_fd_set_u): Removed. Not used.
+
2007-07-11 Eugene Teo <eteo@redhat.com>
* tcp.stp (tcp_sockstate_str, tcp_sockopt_str,
diff --git a/tapset/aux_syscalls.stp b/tapset/aux_syscalls.stp
index e6071507..d1a504de 100644
--- a/tapset/aux_syscalls.stp
+++ b/tapset/aux_syscalls.stp
@@ -489,22 +489,6 @@ function _fildes_u:string (uaddr:long)
}
%}
-function _fd_set_u:string(uaddr:long)
-%{ /* pure */
- fd_set fdset;
- char *ptr = (char *)(unsigned long)THIS->uaddr;
-
- if (ptr == NULL)
- strlcpy (THIS->__retvalue, "NULL", MAXSTRINGLEN);
- else {
- if (_stp_copy_from_user((char *)&fdset, ptr, sizeof(fd_set)) == 0)
- snprintf(THIS->__retvalue, MAXSTRINGLEN, "[0x%lx, 0x%lx, ...]", (long) fdset.fds_bits[0], fdset.fds_bits[1]);
- else
- strlcpy (THIS->__retvalue, "UNKNOWN", MAXSTRINGLEN);
- }
-%}
-
-
function _semctl_cmd:string(cmd:long)
%{ /* pure */
int cmd = THIS->cmd;
@@ -848,6 +832,20 @@ function _itimer_which_str(which) {
}
/*
+ * Return the command name for nfsservctl()
+ */
+function _nfsctl_cmd_str(cmd) {
+ if(cmd == 0) return "NFSCTL_SVC"
+ if(cmd == 1) return "NFSCTL_ADDCLIENT"
+ if(cmd == 2) return "NFSCTL_DELCLIENT"
+ if(cmd == 3) return "NFSCTL_EXPORT"
+ if(cmd == 4) return "NFSCTL_UNEXPORT"
+ if(cmd == 5) return "NFSCTL_UGIDUPDATE"
+ if(cmd == 6) return "NFSCTL_GETFH"
+ return sprintf("UNRECOGNIZED VALUE: %d", cmd)
+}
+
+/*
* Return the symbolic string representation
* of the clockid argument given to create_timer
* consult `man create_timer` for more info
diff --git a/tapset/ppc64/syscalls.stp b/tapset/ppc64/syscalls.stp
index 824ada48..ac4f4dc5 100644
--- a/tapset/ppc64/syscalls.stp
+++ b/tapset/ppc64/syscalls.stp
@@ -175,23 +175,6 @@ probe syscall.compat_sys_newlstat.return =
retstr = returnstr(1)
}
-# compat_sys_ioctl ________________________________________
-#
-# asmlinkage long compat_sys_ioctl(unsigned int fd, unsigned int cmd,
-# unsigned long arg)
-#
-probe syscall.compat_sys_ioctl = kernel.function("compat_sys_ioctl") {
- name = "compat_sys_ioctl"
- d = $fd
- request = cmd
- arg = $arg
- argstr = sprintf("%d, %d, %p", fd, request, arg)
-}
-probe syscall.compat_sys_ioctl.return =
- kernel.function("compat_sys_ioctl").return {
- name = "compat_sys_ioctl"
- retstr = returnstr(1)
-}
# compat_sys_fcntl64 ________________________________________
#
# asmlinkage long compat_sys_fcntl64(unsigned int fd, unsigned int cmd,
@@ -226,141 +209,7 @@ probe syscall.compat_sys_fcntl.return =
name = "compat_sys_fcntl"
retstr = returnstr(1)
}
-# compat_sys_io_setup ________________________________________
-#
-# asmlinkage long compat_sys_io_setup(unsigned nr_reqs, u32 __user *ctx32p)
-#
-probe syscall.compat_sys_io_setup = kernel.function("compat_sys_io_setup") {
- name = "compat_sys_io_setup"
- maxevents = $nr_reqs
- ctxp_uaddr = $ctx32p
- argstr = sprintf("%d, %p", maxevents, ctxp_uaddr)
-}
-probe syscall.compat_sys_io_setup.return =
- kernel.function("compat_sys_io_setup").return {
- name = "compat_sys_io_setup"
- retstr = returnstr(1)
-}
-# compat_sys_io_getevents ________________________________________
-#
-# asmlinkage long compat_sys_io_getevents(aio_context_t ctx_id,
-# unsigned long min_nr,
-# unsigned long nr,
-# struct io_event __user *events,
-# struct compat_timespec __user *timeout)
-#
-probe syscall.compat_sys_io_getevents = kernel.function("compat_sys_io_getevents") {
- name = "compat_sys_io_getevents"
- ctx_id = $ctx_id
- min_nr = $min_nr
- nr = $nr
- events_uaddr = $events
- timeout_uaddr = $timeout
- argstr = sprintf("%d, %d, %d, %p,%p", ctx_id, min_nr, nr,
- events_uaddr, timeout_uaddr)
-}
-probe syscall.compat_sys_io_getevents.return =
- kernel.function("compat_sys_io_getevents").return {
- name = "compat_sys_io_getevents"
- retstr = returnstr(1)
-}
-# compat_sys_io_submit ________________________________________
-#
-# asmlinkage long compat_sys_io_submit(aio_context_t ctx_id, int nr,
-# u32 __user *iocb)
-#
-probe syscall.compat_sys_io_submit = kernel.function("compat_sys_io_submit") {
- name = "compat_sys_io_submit"
- ctx_id = $ctx_id
- nr = $nr
- iocbpp_uaddr = iocb
- argstr = sprintf("%d, %d, %p", ctx_id, nr, iocbpp_uaddr)
-}
-probe syscall.compat_sys_io_submit.return =
- kernel.function("compat_sys_io_submit").return {
- name = "compat_sys_io_submit"
- retstr = returnstr(1)
-}
-# compat_sys_getdents ________________________________________
-#
-# asmlinkage long compat_sys_getdents(unsigned int fd,
-# struct compat_linux_dirent __user *dirent,
-# unsigned int count)
-#
-probe syscall.compat_sys_getdents = kernel.function("compat_sys_getdents") {
- name = "compat_sys_getdentso"
- fd = $fd
- dirent_uaddr = $dirent
- count = $count
- argstr = sprintf("%d, %p, %d", fd, dirp_uaddr, count)
-}
-probe syscall.compat_sys_getdents.return =
- kernel.function("compat_sys_getdents").return {
- name = "compat_sys_getdents"
- retstr = returnstr(1)
-}
-# compat_sys_getdents64 ________________________________________
-#
-# asmlinkage long compat_sys_getdents64(unsigned int fd,
-# struct linux_dirent64 __user * dirent,
-# unsigned int count)
-#
-probe syscall.compat_sys_getdents64 = kernel.function("compat_sys_getdents64") {
- name = "compat_sys_getdents64"
- fd = $fd
- dirent_uaddr = $dirent
- count = $count
- argstr = sprintf("%d, %p, %d", fd, dirp_uaddr, count)
-}
-probe syscall.compat_sys_getdents64.return =
- kernel.function("compat_sys_getdents64").return {
- name = "compat_sys_getdents64"
- retstr = returnstr(1)
-}
-#
-# asmlinkage long compat_sys_select(int n, compat_ulong_t __user *inp,
-# compat_ulong_t __user *outp,
-# compat_ulong_t __user *exp,
-# struct compat_timeval __user *tvp)
-#
-probe syscall.compat_sys_select = kernel.function("compat_sys_select") {
- name = "compat_sys_select"
- n = $n
- readfds_uaddr = $inp
- writefds_uaddr = $outp
- exceptfds_uaddr = $exp
- timeout_uaddr = $tvp
- argstr = sprintf("%d, %s, %s, %s, %s", n,
- _fd_set_u(readfds_uaddr),
- _fd_set_u(writefds_uaddr),
- _fd_set_u(exceptfds_uaddr),
- _struct_timeval_u(timeout_uaddr))
-}
-probe syscall.compat_sys_select.return =
- kernel.function("compat_sys_select").return {
- name = "compat_sys_select"
- retstr = returnstr(1)
-}
-
-# compat_sys_nfsservctl ________________________________________
-#
-# asmlinkage long compat_sys_nfsservctl(int cmd,
-# struct compat_nfsctl_arg __user *arg,
-# union compat_nfsctl_res __user *res)
-#
-probe syscall.compat_sys_nfsservctl = kernel.function("compat_sys_nfsservctl") {
- name = "compat_sys_nfsservctl"
- cmd = $cmd
- argp_uaddr = $arg
- resp_uaddr = $res
- argstr = sprintf("%p, %p, %p", cmd, argp_uaddr, resp_uaddr)
-}
-probe syscall.compat_sys_nfsservctl.return =
- kernel.function("compat_sys_nfsservctl").return {
- name = "compat_sys_nfsservctl"
- retstr = returnstr(1)
-}
# compat_sys_semctl ________________________________________
#
# long compat_sys_semctl(int first, int second, int third, void __user *uptr)
@@ -786,33 +635,6 @@ probe syscall.ppc_rtas.return = kernel.function("ppc_rtas").return {
retstr = returnstr(1)
}
-#
-#
-# These system calls i(to eof) are removed in kernel version > 2.6.9
-#
-
-# quotactl ___________________________________________________
-#
-# asmlinkage long
-# sys_quotactl(unsigned int cmd,
-# const char __user *special,
-# qid_t id,
-# void __user *addr)
-#
-probe syscall.quotactl = kernel.function("sys_quotactl") ? {
- name = "quotactl"
- cmd = $cmd
- cmd_str = _quotactl_cmd_str($cmd)
- special_str = user_string($special)
- id = $id
- addr_uaddr = $addr
- argstr = sprintf("%s, %s, %p, %p", cmd_str, special_str,
- id, addr_uaddr)
-}
-probe syscall.quotactl.return = kernel.function("sys_quotactl").return ? {
- name = "quotactl"
- retstr = returnstr(1)
-}
# request_key ________________________________________________
#
# asmlinkage long
@@ -1278,41 +1100,6 @@ probe syscall.sys32_utimes.return = kernel.function("sys32_utimes").return ? {
name = "sys32_utimes"
retstr = returnstr(1)
}
-# compat_statfs64 ________________________________________
-#
-# asmlinkage long compat_statfs64(const char __user *path, compat_size_t sz,
-# struct compat_statfs64 __user *buf)
-#
-probe syscall.compat_statfs64 = kernel.function("compat_statfs64") ? {
- name = "compat_statfs64"
- path_uaddr = $path
- path = user_string($path)
- sz = $sz
- buf_uaddr = $buf
- argstr = sprintf("%s, %d, %p", path, sz, buf_uaddr)
-}
-probe syscall.compat_statfs64.return =
- kernel.function("compat_statfs64").return ? {
- name = "compat_statfs64"
- retstr = returnstr(1)
-}
-# compat_fstatfs64 ________________________________________
-#
-# asmlinkage long compat_fstatfs64(unsigned int fd, compat_size_t sz,
-# struct compat_statfs64 __user *buf)
-#
-probe syscall.compat_fstatfs64 = kernel.function("compat_fstatfs64") ? {
- name = "compat_fstatfs64"
- fd = $fd
- sz = $sz
- buf_uaddr = $buf
- argstr = sprintf("%d, %d, %p", fd, sz, buf_uaddr)
-}
-probe syscall.compat_fstatfs64.return =
- kernel.function("compat_fstatfs64").return ? {
- name = "compat_fstatfs64"
- retstr = returnstr(1)
-}
# compat_mbind ________________________________________
#
# asmlinkage long compat_mbind(compat_ulong_t start, compat_ulong_t len,
diff --git a/tapset/syscalls.stp b/tapset/syscalls.stp
index da9623cc..dc4dcf9f 100644
--- a/tapset/syscalls.stp
+++ b/tapset/syscalls.stp
@@ -644,9 +644,14 @@ probe syscall.fchown16.return = kernel.function("sys_fchown16").return ? {
# fcntl ______________________________________________________
# long sys_fcntl(int fd, unsigned int cmd, unsigned long arg)
# long sys_fcntl64(unsigned int fd, unsigned int cmd, unsigned long arg)
+# long compat_sys_fcntl64(unsigned int fd, unsigned int cmd, unsigned long arg)
+# long compat_sys_fcntl(unsigned int fd, unsigned int cmd, unsigned long arg)
+#
probe syscall.fcntl =
kernel.function("sys_fcntl") ?,
- kernel.function("sys_fcntl64") ?
+ kernel.function("sys_fcntl64") ?,
+ kernel.function("compat_sys_fcntl") ?,
+ kernel.function("compat_sys_fcntl64") ?
{
name = "fcntl"
fd = $fd
@@ -657,7 +662,9 @@ probe syscall.fcntl =
}
probe syscall.fcntl.return =
kernel.function("sys_fcntl").return ?,
- kernel.function("sys_fcntl64").return ?
+ kernel.function("sys_fcntl64").return ?,
+ kernel.function("compat_sys_fcntl").return ?,
+ kernel.function("compat_sys_fcntl64").return ?
{
name = "fcntl"
retstr = returnstr(1)
@@ -843,14 +850,22 @@ probe syscall.fstatfs.return =
# fstatfs64 __________________________________________________
# long sys_fstatfs64(unsigned int fd, size_t sz, struct statfs64 __user *buf)
-probe syscall.fstatfs64 = kernel.function("sys_fstatfs64") {
+# long compat_sys_fstatfs64(unsigned int fd, compat_size_t sz, struct compat_statfs64 __user *buf)
+#
+probe syscall.fstatfs64 =
+ kernel.function("sys_fstatfs64") ?,
+ kernel.function("comp_sys_fstatfs64") ?
+{
name = "fstatfs"
fd = $fd
sz = $sz
buf_uaddr = $buf
- argstr = sprintf("%d, %d, %p", fd, sz, buf_uaddr)
+ argstr = sprintf("%d, %d, %p", $fd, $sz, $buf)
}
-probe syscall.fstatfs64.return = kernel.function("sys_fstatfs64").return {
+probe syscall.fstatfs64.return =
+ kernel.function("sys_fstatfs64").return ?,
+ kernel.function("comp_sys_fstatfs64").return ?
+{
name = "fstatfs"
retstr = returnstr(1)
}
@@ -967,33 +982,29 @@ probe syscall.getcwd.return = kernel.function("sys_getcwd").return {
}
# getdents ___________________________________________________
-# long sys_getdents(unsigned int fd,
-# struct linux_dirent __user * dirent,
-# unsigned int count)
-probe syscall.getdents = kernel.function("sys_getdents") {
- name = "getdents"
- fd = $fd
- dirp_uaddr = $dirent
- count = $count
- argstr = sprintf("%d, %p, %d", fd, dirp_uaddr, count)
-}
-probe syscall.getdents.return = kernel.function("sys_getdents").return {
- name = "getdents"
- retstr = returnstr(1)
-}
-
-# getdents64 _________________________________________________
-# long sys_getdents64(unsigned int fd,
-# struct linux_dirent64 __user * dirent,
-# unsigned int count)
-probe syscall.getdents64 = kernel.function("sys_getdents64") {
+# long sys_getdents(unsigned int fd, struct linux_dirent __user * dirent, unsigned int count)
+# long compat_sys_getdents(unsigned int fd,struct compat_linux_dirent __user *dirent, unsigned int count)
+# long sys_getdents64(unsigned int fd, struct linux_dirent64 __user * dirent, unsigned int count)
+# long compat_sys_getdents64(unsigned int fd, struct linux_dirent64 __user * dirent, unsigned int count)
+#
+probe syscall.getdents =
+ kernel.function("sys_getdents") ?,
+ kernel.function("sys_getdents64") ?,
+ kernel.function("compat_sys_getdents") ?,
+ kernel.function("compat_sys_getdents64") ?
+{
name = "getdents"
fd = $fd
dirp_uaddr = $dirent
count = $count
- argstr = sprintf("%d, %p, %d", fd, dirp_uaddr, count)
+ argstr = sprintf("%d, %p, %d", $fd, $dirent, $count)
}
-probe syscall.getdents64.return = kernel.function("sys_getdents64").return {
+probe syscall.getdents.return =
+ kernel.function("sys_getdents").return ?,
+ kernel.function("sys_getdents64").return ?,
+ kernel.function("compat_sys_getdents").return ?,
+ kernel.function("compat_sys_getdents64").return ?
+{
name = "getdents"
retstr = returnstr(1)
}
@@ -1488,16 +1499,23 @@ probe syscall.io_cancel.return = kernel.function("sys_io_cancel").return {
}
# ioctl ______________________________________________________
-# long sys_ioctl(unsigned int fd, unsigned int cmd,
-# unsigned long arg)
-probe syscall.ioctl = kernel.function("sys_ioctl") {
+# long sys_ioctl(unsigned int fd, unsigned int cmd, unsigned long arg)
+# long compat_sys_ioctl(unsigned int fd, unsigned int cmd, unsigned long arg)
+#
+probe syscall.ioctl =
+ kernel.function("sys_ioctl") ?,
+ kernel.function("compat_sys_ioctl") ?
+{
name = "ioctl"
fd = $fd
request = $cmd
argp = $arg
- argstr = sprintf("%d, %d, %p", fd, request, argp)
+ argstr = sprintf("%d, %d, %p", $fd, $cmd, $arg)
}
-probe syscall.ioctl.return = kernel.function("sys_ioctl").return {
+probe syscall.ioctl.return =
+ kernel.function("sys_ioctl").return ?,
+ kernel.function("compat_sys_ioctl").return ?
+{
name = "ioctl"
retstr = returnstr(1)
}
@@ -1520,8 +1538,16 @@ probe syscall.io_destroy.return = kernel.function("sys_io_destroy").return {
# long nr,
# struct io_event __user *events,
# struct timespec __user *timeout)
-
-probe syscall.io_getevents = kernel.function("sys_io_getevents") {
+# long compat_sys_io_getevents(aio_context_t ctx_id,
+# unsigned long min_nr,
+# unsigned long nr,
+# struct io_event __user *events,
+# struct compat_timespec __user *timeout)
+#
+probe syscall.io_getevents =
+ kernel.function("sys_io_getevents") ?,
+ kernel.function("compat_sys_io_getevents") ?
+{
name = "io_getevents"
ctx_id = $ctx_id
min_nr = $min_nr
@@ -1529,10 +1555,13 @@ probe syscall.io_getevents = kernel.function("sys_io_getevents") {
events_uaddr = $events
timeout_uaddr = $timeout
timestr = _struct_timespec_u($timeout)
- argstr = sprintf("%d, %d, %d, %p, %p, %s", ctx_id, min_nr,
- nr, events_uaddr, timeout_uaddr, timestr)
+ argstr = sprintf("%d, %d, %d, %p, %p, %s", $ctx_id, $min_nr,
+ $nr, $events, $timeout, timestr)
}
-probe syscall.io_getevents.return = kernel.function("sys_io_getevents").return {
+probe syscall.io_getevents.return =
+ kernel.function("sys_io_getevents").return ?,
+ kernel.function("compat_sys_io_getevents").return ?
+{
name = "io_getevents"
retstr = returnstr(1)
}
@@ -1554,35 +1583,59 @@ probe syscall.ioperm.return = kernel.function("sys_ioperm").return ? {
# io_setup ___________________________________________________
# long sys_io_setup(unsigned nr_events, aio_context_t __user *ctxp)
-#
+#
probe syscall.io_setup = kernel.function("sys_io_setup") {
name = "io_setup"
maxevents = $nr_events
ctxp_uaddr = $ctxp
- argstr = sprintf("%d, %p", maxevents, ctxp_uaddr)
+ argstr = sprintf("%d, %p", $nr_events, $ctxp)
}
probe syscall.io_setup.return = kernel.function("sys_io_setup").return {
name = "io_setup"
retstr = returnstr(1)
}
+# long compat_sys_io_setup(unsigned nr_reqs, u32 __user *ctx32p)
+#
+probe syscall.compat_io_setup = kernel.function("compat_sys_io_setup") ? {
+ name = "io_setup"
+ maxevents = $nr_reqs
+ ctxp_uaddr = $ctxp32p
+ argstr = sprintf("%d, %p", $nr_reqs, $ctxp32p)
+}
+
+probe syscall.compat_io_setup.return = kernel.function("compat_sys_io_setup").return ? {
+ name = "io_setup"
+ retstr = returnstr(1)
+}
# io_submit __________________________________________________
-# long sys_io_submit(aio_context_t ctx_id,
-# long nr,
-# struct iocb __user * __user *iocbpp)
+# long sys_io_submit(aio_context_t ctx_id, long nr, struct iocb __user * __user *iocbpp)
#
probe syscall.io_submit = kernel.function("sys_io_submit") {
name = "io_submit"
ctx_id = $ctx_id
nr = $nr
iocbpp_uaddr = $iocbpp
- argstr = sprintf("%d, %d, %p", ctx_id, nr, iocbpp_uaddr)
+ argstr = sprintf("%d, %d, %p", $ctx_id, $nr, $iocbpp)
}
probe syscall.io_submit.return = kernel.function("sys_io_submit").return {
name = "io_submit"
retstr = returnstr(1)
}
+# long compat_sys_io_submit(aio_context_t ctx_id, int nr, u32 __user *iocb)
+#
+probe syscall.compat_io_submit = kernel.function("compat_sys_io_submit") ? {
+ name = "io_submit"
+ ctx_id = $ctx_id
+ nr = $nr
+ iocbpp_uaddr = $iocb
+ argstr = sprintf("%d, %d, %p", $ctx_id, $nr, $iocb)
+}
+probe syscall.compat_io_submit.return = kernel.function("sys_io_submit").return ? {
+ name = "io_submit"
+ retstr = returnstr(1)
+}
# ioprio_get _________________________________________________
# long sys_ioprio_get(int which, int who)
diff --git a/tapset/syscalls2.stp b/tapset/syscalls2.stp
index d9ecc048..7c5b4854 100644
--- a/tapset/syscalls2.stp
+++ b/tapset/syscalls2.stp
@@ -1,6 +1,6 @@
// syscalls tapset part 2 [N-Z]
// Copyright (C) 2005 IBM Corp.
-// Copyright (C) 2005, 2006 Red Hat Inc.
+// Copyright (C) 2005, 2006, 2007 Red Hat Inc.
// Copyright (C) 2007 Quentin Barnes.
//
// This file is part of systemtap, and is free software. You can
@@ -51,19 +51,24 @@ probe syscall.compat_nanosleep.return = kernel.function("compat_sys_nanosleep").
# nfsservctl _________________________________________________
#
-# long asmlinkage
-# sys_nfsservctl(int cmd,
-# struct nfsctl_arg __user *arg,
-# void __user *res)
+# long sys_nfsservctl(int cmd, struct nfsctl_arg __user *arg, void __user *res)
+# long compat_sys_nfsservctl(int cmd, struct compat_nfsctl_arg __user *arg,
+# union compat_nfsctl_res __user *res)
#
-probe syscall.nfsservctl = kernel.function("sys_nfsservctl") {
+probe syscall.nfsservctl =
+ kernel.function("sys_nfsservctl") ?,
+ kernel.function("compat_sys_nfsservctl") ?
+{
name = "nfsservctl"
cmd = $cmd
argp_uaddr = $arg
resp_uaddr = $res
- argstr = sprintf("%p, %p, %p", cmd, argp_uaddr, resp_uaddr)
+ argstr = sprintf("%s, %p, %p", _nfsctl_cmd_str($cmd), $arg, $res)
}
-probe syscall.nfsservctl.return = kernel.function("sys_nfsservctl").return {
+probe syscall.nfsservctl.return =
+ kernel.function("sys_nfsservctl").return ?,
+ kernel.function("compat_sys_nfsservctl").return ?
+{
name = "nfsservctl"
retstr = returnstr(1)
}
@@ -121,6 +126,36 @@ probe syscall.open.return =
retstr = returnstr(1)
}
+# openat _______________________________________________________
+# long sys_openat(int dfd, const char __user *filename, int flags, int mode)
+# long compat_sys_openat(unsigned int dfd, const char __user *filename, int flags, int mode)
+#
+probe syscall.openat =
+ kernel.function("sys_openat") ?,
+ kernel.function("compat_sys_openat") ?
+{
+ name = "openat"
+ filename = user_string($filename)
+ flags = $flags
+ mode = $mode
+ if ($flags & 64)
+ argstr = sprintf("%d, %s, %s, %#o", $dfd,
+ user_string_quoted($filename),
+ _sys_open_flag_str($flags), $mode)
+ else
+ argstr = sprintf("%d, %s, %s", $dfd,
+ user_string_quoted($filename),
+ _sys_open_flag_str($flags))
+}
+probe syscall.openat.return =
+ kernel.function("sys_openat").return ?,
+ kernel.function("compat_sys_openat").return ?
+{
+ name = "openat"
+ retstr = returnstr(1)
+}
+
+
# pause ______________________________________________________
#
# sys_pause(void)
@@ -251,11 +286,10 @@ probe syscall.pipe.return = kernel.function("sys_pipe").return {
name = "pipe"
retstr = returnstr(1)
}
+
# pivot_root _________________________________________________
#
-# asmlinkage long
-# sys_pivot_root(const char __user *new_root,
-# const char __user *put_old)
+# long sys_pivot_root(const char __user *new_root, const char __user *put_old)
#
probe syscall.pivot_root = kernel.function("sys_pivot_root") {
name = "pivot_root"
@@ -268,12 +302,10 @@ probe syscall.pivot_root.return = kernel.function("sys_pivot_root").return {
name = "pivot_root"
retstr = returnstr(1)
}
+
# poll _______________________________________________________
#
-# asmlinkage long
-# sys_poll(struct pollfd __user * ufds,
-# unsigned int nfds,
-# long timeout)
+# long sys_poll(struct pollfd __user * ufds, unsigned int nfds, long timeout)
#
probe syscall.poll = kernel.function("sys_poll") {
name = "poll"
@@ -284,12 +316,50 @@ probe syscall.poll = kernel.function("sys_poll") {
%:
timeout = $timeout
%)
- argstr = sprintf("%p, %d, %d", ufds_uaddr, nfds, timeout)
+ argstr = sprintf("%p, %d, %d", $ufds, $nfds, timeout)
}
probe syscall.poll.return = kernel.function("sys_poll").return {
name = "poll"
retstr = returnstr(1)
}
+
+# ppoll _______________________________________________________
+#
+# long sys_ppoll(struct pollfd __user *ufds, unsigned int nfds,
+# struct timespec __user *tsp, const sigset_t __user *sigmask,
+# size_t sigsetsize)
+#
+probe syscall.ppoll = kernel.function("sys_ppoll") ? {
+ name = "ppoll"
+ argstr = sprintf("%p, %d, %s, %p, %d",
+ $ufds,
+ $nfds,
+ _struct_timespec_u($tsp),
+ $sigmask,
+ $sigsetsize)
+}
+probe syscall.ppoll.return = kernel.function("sys_ppoll").return ? {
+ name = "ppoll"
+ retstr = returnstr(1)
+}
+# long compat_sys_ppoll(struct pollfd __user *ufds,
+# unsigned int nfds, struct compat_timespec __user *tsp,
+# const compat_sigset_t __user *sigmask, compat_size_t sigsetsize)
+#
+probe syscall.compat_ppoll = kernel.function("compat_sys_ppoll") ? {
+ name = "ppoll"
+ argstr = sprintf("%p, %d, %s, %p, %d",
+ $ufds,
+ $nfds,
+ _struct_compat_timespec_u($tsp),
+ $sigmask,
+ $sigsetsize)
+}
+probe syscall.compat_ppoll.return = kernel.function("compat_sys_ppoll").return ? {
+ name = "ppoll"
+ retstr = returnstr(1)
+}
+
# prctl ______________________________________________________
#
# asmlinkage long
@@ -315,25 +385,87 @@ probe syscall.prctl.return = kernel.function("sys_prctl").return {
}
# pread64 ____________________________________________________
#
-# asmlinkage ssize_t
-# sys_pread64(unsigned int fd,
+# ssize_t sys_pread64(unsigned int fd,
# char __user *buf,
# size_t count,
# loff_t pos)
#
-probe syscall.pread64 = kernel.function("sys_pread64") {
- name = "pread64"
+probe syscall.pread = kernel.function("sys_pread64") {
+ name = "pread"
fd = $fd
buf_uaddr = $buf
count = $count
offset = $pos
- argstr = sprintf("%d, %p, %p, %p", fd, buf_uaddr,
- count, offset)
+ argstr = sprintf("%d, %p, %p, %p", $fd, $buf, $count, $pos)
+}
+probe syscall.pread.return = kernel.function("sys_pread64").return {
+ name = "pread"
+ retstr = returnstr(1)
+}
+#long sys32_pread64(unsigned int fd, char __user *ubuf,
+# size_t count, u32 poshi, u32 poslo)
+probe syscall.pread32 = kernel.function("sys32_pread64") ? {
+ name = "pread"
+ fd = $fd
+ buf_uaddr = $buf
+ count = $count
+ offset = ($poshi << 32) + $poslo
+ argstr = sprintf("%d, %p, %p, %p", $fd, $buf, $count, ($poshi << 32) + $poslo)
+}
+probe syscall.pread32.return = kernel.function("sys32_pread64").return ? {
+ name = "pread"
+ retstr = returnstr(1)
+}
+
+# pselect6 _____________________________________________________
+#
+# long sys_pselect6(int n, fd_set __user *inp, fd_set __user *outp,
+# fd_set __user *exp, struct timespec __user *tsp, void __user *sig)
+#
+probe syscall.pselect6 = kernel.function("sys_pselect6") ? {
+ name = "pselect6"
+ argstr = sprintf("%d, %p, %p, %p, %s, %p", $n, $inp, $outp, $exp,
+ _struct_timespec_u($tsp), $sig)
+}
+probe syscall.pselect6.return = kernel.function("sys_pselect6").return ? {
+ name = "pselect6"
+ retstr = returnstr(1)
+}
+probe syscall.compat_pselect6 = kernel.function("compat_sys_pselect6") ? {
+ name = "pselect6"
+ argstr = sprintf("%d, %p, %p, %p, %s, %p", $n, $inp, $outp, $exp,
+ _struct_compat_timespec_u($tsp), $sig)
+}
+probe syscall.compat_pselect6.return = kernel.function("compat_sys_pselect6").return ? {
+ name = "pselect6"
+ retstr = returnstr(1)
+}
+
+# pselect7 _____________________________________________________
+#
+# long sys_pselect7(int n, fd_set __user *inp, fd_set __user *outp,
+# fd_set __user *exp, struct timespec __user *tsp,
+# const sigset_t __user *sigmask, size_t sigsetsize)
+#
+probe syscall.pselect7 = kernel.function("sys_pselect7") ? {
+ name = "pselect7"
+ argstr = sprintf("%d, %p, %p, %p, %s, %p, %d", $n, $inp, $outp, $exp,
+ _struct_timespec_u($tsp), $sigmask, $sigsetsize)
+}
+probe syscall.pselect7.return = kernel.function("sys_pselect7").return ? {
+ name = "pselect7"
+ retstr = returnstr(1)
+}
+probe syscall.compat_pselect7a = kernel.function("compat_sys_pselect7") ? {
+ name = "pselect7"
+ argstr = sprintf("%d, %p, %p, %p, %s, %p, %d", $n, $inp, $outp, $exp,
+ _struct_compat_timespec_u($tsp), $sigmask, $sigsetsize)
}
-probe syscall.pread64.return = kernel.function("sys_pread64").return {
- name = "pread64"
+probe syscall.compat_pselect7.return = kernel.function("compat_sys_pselect").return ? {
+ name = "pselect7"
retstr = returnstr(1)
}
+
# ptrace _____________________________________________________
#
# asmlinkage int
@@ -355,25 +487,42 @@ probe syscall.ptrace.return = kernel.function("sys_ptrace").return {
name = "ptrace"
retstr = returnstr(1)
}
+
# pwrite64 ___________________________________________________
#
-# asmlinkage ssize_t
-# sys_pwrite64(unsigned int fd,
+# ssize_t sys_pwrite64(unsigned int fd,
# const char __user *buf,
# size_t count,
# loff_t pos)
#
-probe syscall.pwrite64 = kernel.function("sys_pwrite64") {
- name = "pwrite64"
+probe syscall.pwrite = kernel.function("sys_pwrite64") {
+ name = "pwrite"
fd = $fd
buf_uaddr = $buf
count = $count
offset = $pos
- argstr = sprintf("%d, %p, %p, %p", fd, buf_uaddr,
- count, offset)
+ argstr = sprintf("%d, %s, %d, %d", $fd,
+ text_strn(user_string($buf),syscall_string_trunc,1),
+ $count, $pos)
}
-probe syscall.pwrite64.return = kernel.function("sys_pwrite64").return {
- name = "pwrite64"
+probe syscall.pwrite.return = kernel.function("sys_pwrite64").return {
+ name = "pwrite"
+ retstr = returnstr(1)
+}
+# long sys32_pwrite64(unsigned int fd, const char __user *ubuf,
+# size_t count, u32 poshi, u32 poslo)
+probe syscall.pwrite32 = kernel.function("sys32_pwrite64") ? {
+ name = "pwrite"
+ fd = $fd
+ buf_uaddr = $buf
+ count = $count
+ offset = ($poshi << 32) + $poslo
+ argstr = sprintf("%d, %s, %d, %d", $fd,
+ text_strn(user_string($buf),syscall_string_trunc,1),
+ $count, ($poshi << 32) + $poslo)
+}
+probe syscall.pwrite32.return = kernel.function("sys32_pwrite64").return ? {
+ name = "pwrite"
retstr = returnstr(1)
}
@@ -431,6 +580,20 @@ probe syscall.readahead.return = kernel.function("sys_readahead").return {
name = "readahead"
retstr = returnstr(1)
}
+
+# readdir ___________________________________________________
+#
+# long compat_sys_old_readdir(unsigned int fd, struct compat_old_linux_dirent __user *dirent, unsigned int count)
+#
+probe syscall.readdir = kernel.function("compat_sys_old_readdir") ? {
+ name = "readdir"
+ argstr = sprintf("%d, %p, %d", $fd, $dirent, $count)
+}
+probe syscall.readdir.return = kernel.function("compat_sys_old_readdir").return ? {
+ name = "readdir"
+ retstr = returnstr(1)
+}
+
# readlink ___________________________________________________
#
# long sys_readlink(const char __user * path,
@@ -1046,16 +1209,34 @@ probe syscall.select = kernel.function("sys_select") {
readfds_uaddr = $inp
writefds_uaddr = $outp
exceptfds_uaddr = $exp
- timeout_uaddr = $tvp
- argstr = sprintf("%d, %s, %s, %s, %s", n, _fd_set_u(readfds_uaddr),
- _fd_set_u(writefds_uaddr),
- _fd_set_u(exceptfds_uaddr),
- _struct_timeval_u(timeout_uaddr))
+ timeout_uaddr = $tv
+ argstr = sprintf("%d, %p, %p, %p, %s", $n, $inp, $outp, $exp,
+ _struct_timeval_u($tvp))
}
probe syscall.select.return = kernel.function("sys_select").return {
name = "select"
retstr = returnstr(1)
}
+# long compat_sys_select(int n,
+# compat_ulong_t __user *inp,
+# compat_ulong_t __user *outp,
+# compat_ulong_t __user *exp,
+# struct compat_timeval __user *tvp)
+#
+probe syscall.compat_select = kernel.function("compat_sys_select") ? {
+ name = "select"
+ n = $n
+ readfds_uaddr = $inp
+ writefds_uaddr = $outp
+ exceptfds_uaddr = $exp
+ timeout_uaddr = $tvp
+ argstr = sprintf("%d, %p, %p, %p, %s", $n, $inp, $outp, $exp,
+ _struct_compat_timeval_u($tvp))
+}
+probe syscall.compat_select.return = kernel.function("compat_sys_select").return ? {
+ name = "select"
+ retstr = returnstr(1)
+}
# semctl _____________________________________________________
# long sys_semctl (int semid,
@@ -2012,19 +2193,24 @@ probe syscall.statfs.return =
# statfs64 ___________________________________________________
#
-# long sys_statfs64(const char __user *path,
-# size_t sz,
-# struct statfs64 __user *buf)
+# long sys_statfs64(const char __user *path, size_t sz, struct statfs64 __user *buf)
+# long compat_sys_statfs64(const char __user *path, compat_size_t sz, struct compat_statfs64 __user *buf)
#
-probe syscall.statfs64 = kernel.function("sys_statfs64") {
- name = "statfs64"
+probe syscall.statfs64 =
+ kernel.function("sys_statfs64") ?,
+ kernel.function("comp_sys_statfs64") ?
+{
+ name = "statfs"
path = user_string($path)
sz = $sz
buf_uaddr = $buf
argstr = sprintf("%s, %d, %p", user_string_quoted($path), $sz, $buf)
}
-probe syscall.statfs64.return = kernel.function("sys_statfs64").return {
- name = "statfs64"
+probe syscall.statfs64.return =
+ kernel.function("sys_statfs64").return ?,
+ kernel.function("comp_sys_statfs64").return ?
+{
+ name = "statfs"
retstr = returnstr(1)
}