summaryrefslogtreecommitdiffstats
path: root/tapset
diff options
context:
space:
mode:
Diffstat (limited to 'tapset')
-rw-r--r--tapset/aux_syscalls.stp23
-rw-r--r--tapset/syscalls2.stp22
2 files changed, 40 insertions, 5 deletions
diff --git a/tapset/aux_syscalls.stp b/tapset/aux_syscalls.stp
index 6179719c..bd62817d 100644
--- a/tapset/aux_syscalls.stp
+++ b/tapset/aux_syscalls.stp
@@ -1685,6 +1685,29 @@ function _eventfd2_flag_str:string(f:long)
%}
%{
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,22)
+#include <linux/signalfd.h>
+#endif
+%}
+function _signalfd4_flags_str:string(f:long)
+%{ /* pure */
+ long flags = THIS->f;
+ char *str = THIS->__retvalue;
+ int len;
+
+#if defined(SFD_CLOEXEC) && defined(SFD_NONBLOCK)
+ if (flags & SFD_NONBLOCK)
+ strlcat(str, "SFD_NONBLOCK|", MAXSTRINGLEN);
+ if (flags & SFD_CLOEXEC)
+ strlcat(str, "SFD_CLOEXEC|", MAXSTRINGLEN);
+#endif
+
+ len = strlen(str);
+ if (len)
+ str[strlen(str)-1] = 0;
+%}
+
+%{
#include <linux/inotify.h>
%}
function _inotify_init1_flag_str:string(f:long)
diff --git a/tapset/syscalls2.stp b/tapset/syscalls2.stp
index da6b637e..31a29560 100644
--- a/tapset/syscalls2.stp
+++ b/tapset/syscalls2.stp
@@ -2524,16 +2524,28 @@ probe syscall.signal.return = kernel.function("SyS_signal").return !,
# long compat_sys_signalfd(int ufd, const compat_sigset_t __user *sigmask,
# compat_size_t sigsetsize)
#
-probe syscall.signalfd = kernel.function("SyS_signalfd").call !,
+probe syscall.signalfd = kernel.function("SyS_signalfd4").call !,
+ kernel.function("sys_signalfd4").call !,
+ kernel.function("SyS_signalfd").call !,
kernel.function("sys_signalfd").call ?
{
- name = "signalfd"
- argstr = sprintf("%d, %p, %d", $ufd, $user_mask, $sizemask)
+ flags = @defined($flags) ? $flags : 0;
+ if (flags == 0) {
+ name = "signalfd"
+ argstr = sprintf("%d, %p, %d", $ufd, $user_mask, $sizemask)
+ } else {
+ name = "signalfd4"
+ argstr = sprintf("%d, %p, %d, %s", $ufd, $user_mask,
+ $sizemask, _signalfd4_flags_str($flags))
+ }
}
-probe syscall.signalfd.return = kernel.function("SyS_signalfd").return !,
+probe syscall.signalfd.return = kernel.function("SyS_signalfd4").return !,
+ kernel.function("sys_signalfd4").return !,
+ kernel.function("SyS_signalfd").return !,
kernel.function("sys_signalfd").return ?
{
- name = "signalfd"
+ flags = @defined($flags) ? $flags : 0;
+ name = (flags == 0) ? "signalfd" : "signalfd4"
retstr = returnstr(1)
}
probe syscall.compat_signalfd = kernel.function("compat_sys_signalfd").call ?