]> sourceware.org Git - systemtap.git/commitdiff
PR20333/epoll_wait
authorMartin Cermak <mcermak@redhat.com>
Thu, 22 Dec 2016 15:33:37 +0000 (16:33 +0100)
committerMartin Cermak <mcermak@redhat.com>
Thu, 22 Dec 2016 15:33:37 +0000 (16:33 +0100)
tapset/linux/nd_syscalls.stp
tapset/linux/sysc_epoll_wait.stp [new file with mode: 0644]
tapset/linux/syscalls.stp

index 21704f8c0654add9034187f7f3f9a6736c95e9ac..4f6066176e358d35065fa09e281aba0e5f6d0036 100644 (file)
@@ -1,34 +1,4 @@
 
-# epoll_wait _________________________________________________
-#
-# long sys_epoll_wait(int epfd, struct epoll_event __user *events,
-#               int maxevents, int timeout)
-# long compat_sys_epoll_wait(int epfd,
-#              struct compat_epoll_event __user *events,
-#              int maxevents, int timeout)
-#
-probe nd_syscall.epoll_wait = kprobe.function("compat_sys_epoll_wait") ?,
-                              kprobe.function("sys_epoll_wait") ?
-{
-       @__syscall_compat_gate(@const("__NR_epoll_wait"),
-                              @const("__NR_compat_epoll_wait"))
-       name = "epoll_wait"
-       asmlinkage()
-       epfd = int_arg(1)
-       events_uaddr = pointer_arg(2)
-       maxevents = int_arg(3)
-       timeout = int_arg(4)
-       argstr = sprintf("%d, %p, %d, %d", epfd, events_uaddr, maxevents, timeout)
-}
-probe nd_syscall.epoll_wait.return = kprobe.function("compat_sys_epoll_wait").return ?,
-                                     kprobe.function("sys_epoll_wait").return ?
-{
-       @__syscall_compat_gate(@const("__NR_epoll_wait"),
-                              @const("__NR_compat_epoll_wait"))
-       name = "epoll_wait"
-       retstr = returnstr(1)
-}
-
 # eventfd _____________________________________________________
 # long sys_eventfd(unsigned int count)
 # SYSCALL_DEFINE2(eventfd2, unsigned int, count, int, flags)
diff --git a/tapset/linux/sysc_epoll_wait.stp b/tapset/linux/sysc_epoll_wait.stp
new file mode 100644 (file)
index 0000000..bf0d5c4
--- /dev/null
@@ -0,0 +1,68 @@
+# epoll_wait _________________________________________________
+#
+# long sys_epoll_wait(int epfd, struct epoll_event __user *events,
+#               int maxevents, int timeout)
+# long compat_sys_epoll_wait(int epfd,
+#              struct compat_epoll_event __user *events,
+#              int maxevents, int timeout)
+#
+
+@define _SYSCALL_EPOLL_WAIT_NAME
+%(
+       name = "epoll_wait"
+%)
+
+@define _SYSCALL_EPOLL_WAIT_ARGSTR
+%(
+       argstr = sprintf("%d, %p, %d, %d", epfd, events_uaddr, maxevents, timeout)
+%)
+
+probe syscall.epoll_wait = dw_syscall.epoll_wait !, nd_syscall.epoll_wait {}
+probe syscall.epoll_wait.return = dw_syscall.epoll_wait.return !, nd_syscall.epoll_wait.return {}
+
+# dw_epoll_wait _____________________________________________________
+
+probe dw_syscall.epoll_wait = kernel.function("compat_sys_epoll_wait").call ?,
+                           kernel.function("sys_epoll_wait").call ?
+{
+       @__syscall_compat_gate(@const("__NR_epoll_wait"),
+                              @const("__NR_compat_epoll_wait"))
+       @_SYSCALL_EPOLL_WAIT_NAME
+       epfd = __int32($epfd)
+       events_uaddr = $events
+       maxevents = __int32($maxevents)
+       timeout = __int32($timeout)
+       @_SYSCALL_EPOLL_WAIT_ARGSTR
+}
+probe dw_syscall.epoll_wait.return = kernel.function("compat_sys_epoll_wait").return ?,
+                                  kernel.function("sys_epoll_wait").return ?
+{
+       @__syscall_compat_gate(@const("__NR_epoll_wait"),
+                              @const("__NR_compat_epoll_wait"))
+       @_SYSCALL_EPOLL_WAIT_NAME
+       retstr = return_str(1, $return)
+}
+
+# nd_epoll_wait _____________________________________________________
+
+probe nd_syscall.epoll_wait = kprobe.function("compat_sys_epoll_wait") ?,
+                              kprobe.function("sys_epoll_wait") ?
+{
+       @__syscall_compat_gate(@const("__NR_epoll_wait"),
+                              @const("__NR_compat_epoll_wait"))
+       @_SYSCALL_EPOLL_WAIT_NAME
+       asmlinkage()
+       epfd = int_arg(1)
+       events_uaddr = pointer_arg(2)
+       maxevents = int_arg(3)
+       timeout = int_arg(4)
+       @_SYSCALL_EPOLL_WAIT_ARGSTR
+}
+probe nd_syscall.epoll_wait.return = kprobe.function("compat_sys_epoll_wait").return ?,
+                                     kprobe.function("sys_epoll_wait").return ?
+{
+       @__syscall_compat_gate(@const("__NR_epoll_wait"),
+                              @const("__NR_compat_epoll_wait"))
+       @_SYSCALL_EPOLL_WAIT_NAME
+       retstr = returnstr(1)
+}
index 79f1047c50df7e1e1cf8980b146e839dd7919a73..dd7b6d57dec76de4fbca61e3a4141fc9398e48f8 100644 (file)
@@ -1,33 +1,4 @@
 
-# epoll_wait _________________________________________________
-#
-# long sys_epoll_wait(int epfd, struct epoll_event __user *events,
-#               int maxevents, int timeout)
-# long compat_sys_epoll_wait(int epfd,
-#              struct compat_epoll_event __user *events,
-#              int maxevents, int timeout)
-#
-probe syscall.epoll_wait = kernel.function("compat_sys_epoll_wait").call ?,
-                           kernel.function("sys_epoll_wait").call ?
-{
-       @__syscall_compat_gate(@const("__NR_epoll_wait"),
-                              @const("__NR_compat_epoll_wait"))
-       name = "epoll_wait"
-       epfd = __int32($epfd)
-       events_uaddr = $events
-       maxevents = __int32($maxevents)
-       timeout = __int32($timeout)
-       argstr = sprintf("%d, %p, %d, %d", epfd, $events, maxevents, timeout)
-}
-probe syscall.epoll_wait.return = kernel.function("compat_sys_epoll_wait").return ?,
-                                  kernel.function("sys_epoll_wait").return ?
-{
-       @__syscall_compat_gate(@const("__NR_epoll_wait"),
-                              @const("__NR_compat_epoll_wait"))
-       name = "epoll_wait"
-       retstr = return_str(1, $return)
-}
-
 # eventfd _____________________________________________________
 # long sys_eventfd(unsigned int count)
 # SYSCALL_DEFINE2(eventfd2, unsigned int, count, int, flags)
This page took 0.034363 seconds and 5 git commands to generate.