From a1ecf9ff0f6fc6ef0bcdaf231ed2d395ee979b4b Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Sun, 21 Mar 2010 17:23:17 +0100 Subject: 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. --- tapset/aux_syscalls.stp | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'tapset/aux_syscalls.stp') 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 @@ -1684,6 +1684,29 @@ function _eventfd2_flag_str:string(f:long) str[strlen(str)-1] = 0; %} +%{ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,22) +#include +#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 %} -- cgit