summaryrefslogtreecommitdiffstats
path: root/testsuite/systemtap.syscall/signalfd.c
diff options
context:
space:
mode:
authorMark Wielaard <mjw@redhat.com>2010-03-21 17:23:17 +0100
committerMark Wielaard <mjw@redhat.com>2010-03-21 17:34:41 +0100
commita1ecf9ff0f6fc6ef0bcdaf231ed2d395ee979b4b (patch)
treef1d81e2993184326b3ca30314e8ae6b7e0476696 /testsuite/systemtap.syscall/signalfd.c
parent6c8598ca45b8c0910fc0f45352b31711164e4d1c (diff)
downloadsystemtap-steved-a1ecf9ff0f6fc6ef0bcdaf231ed2d395ee979b4b.tar.gz
systemtap-steved-a1ecf9ff0f6fc6ef0bcdaf231ed2d395ee979b4b.tar.xz
systemtap-steved-a1ecf9ff0f6fc6ef0bcdaf231ed2d395ee979b4b.zip
Support signalfd4 in syscalls2.stp tapset.
* tapset/aux_syscalls.stp (_signalfd4_flags_str): New utility function. * tapset/syscalls2.stp (syscall.signalfd[.return]): Handle signalfd4 variant when available. * testsuite/systemtap.syscall/signalfd.c: New test.
Diffstat (limited to 'testsuite/systemtap.syscall/signalfd.c')
-rw-r--r--testsuite/systemtap.syscall/signalfd.c35
1 files changed, 35 insertions, 0 deletions
diff --git a/testsuite/systemtap.syscall/signalfd.c b/testsuite/systemtap.syscall/signalfd.c
new file mode 100644
index 00000000..e4621bf9
--- /dev/null
+++ b/testsuite/systemtap.syscall/signalfd.c
@@ -0,0 +1,35 @@
+/* COVERAGE: signalfd */
+#include <sys/signalfd.h>
+#include <sys/syscall.h>
+#include <sys/types.h>
+#include <unistd.h>
+#include <signal.h>
+#include <string.h>
+
+int main()
+{
+ sigset_t mask;
+ int sfd;
+
+ sigemptyset(&mask);
+ sigaddset(&mask, SIGINT);
+ sigaddset(&mask, SIGQUIT);
+ sfd = signalfd(-1, &mask, 0);
+ //staptest// signalfd (-1, XXXX, NNNN) = NNNN
+
+ sigaddset(&mask, SIGUSR1);
+ sigaddset(&mask, SIGUSR2);
+ sfd = signalfd(sfd, &mask, 0);
+ //staptest// signalfd (NNNN, XXXX, NNNN) = NNNN
+
+#if defined(SFD_NONBLOCK) && defined(SFD_CLOEXEC)
+ sfd = signalfd(-1, &mask, SFD_NONBLOCK);
+ //staptest// signalfd4 (-1, XXXX, NNNN, SFD_NONBLOCK) = NNNN
+ sfd = signalfd(-1, &mask, SFD_CLOEXEC);
+ //staptest// signalfd4 (-1, XXXX, NNNN, SFD_CLOEXEC) = NNNN
+ sfd = signalfd(-1, &mask, SFD_NONBLOCK|SFD_CLOEXEC);
+ //staptest// signalfd4 (-1, XXXX, NNNN, SFD_NONBLOCK|SFD_CLOEXEC) = NNNN
+#endif
+
+ return 0;
+}