diff options
author | hunt <hunt> | 2007-07-16 17:18:38 +0000 |
---|---|---|
committer | hunt <hunt> | 2007-07-16 17:18:38 +0000 |
commit | 7f9250cd27a07cf41fd6a5cd1dbd45527f475b15 (patch) | |
tree | 3b5b46ddc3aedbefbc7a471ebfcca6221c7e1d19 | |
parent | e1ae40377570e3a0bfc94c5a9a891d403a5938ee (diff) | |
download | systemtap-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/ChangeLog | 29 | ||||
-rw-r--r-- | tapset/aux_syscalls.stp | 30 | ||||
-rw-r--r-- | tapset/ppc64/syscalls.stp | 213 | ||||
-rw-r--r-- | tapset/syscalls.stp | 139 | ||||
-rw-r--r-- | tapset/syscalls2.stp | 274 |
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) } |