From: Martin Cermak Date: Thu, 22 Dec 2016 14:01:06 +0000 (+0100) Subject: PR20333/compat_clock_nanosleep X-Git-Tag: release-3.1~499 X-Git-Url: https://sourceware.org/git/?a=commitdiff_plain;h=da9734ce353323f91d9857382bda54773cc4802e;p=systemtap.git PR20333/compat_clock_nanosleep --- diff --git a/tapset/linux/nd_syscalls.stp b/tapset/linux/nd_syscalls.stp index 70c740627..7aa11f7dc 100644 --- a/tapset/linux/nd_syscalls.stp +++ b/tapset/linux/nd_syscalls.stp @@ -1,37 +1,4 @@ -# compat_clock_nanosleep ________________________________________ -# -# long compat_clock_nanosleep(clockid_t which_clock, int flags, -# struct compat_timespec __user *rqtp, -# struct compat_timespec __user *rmtp) -# -probe nd_syscall.compat_clock_nanosleep = - kprobe.function("compat_clock_nanosleep").call ?, - kprobe.function("compat_sys_clock_nanosleep").call ? -{ - name = "clock_nanosleep" - asmlinkage() - clk_id = int_arg(1) - clk_id_str = _get_wc_str(clk_id) - flags = int_arg(2) -%(systemtap_v <= "2.6" %? - flag_str = _stp_clock_nanosleep_flags_str(flags) -%) - flags_str = _stp_clock_nanosleep_flags_str(flags) - req_uaddr = pointer_arg(3) - rem_uaddr = pointer_arg(4) - argstr = sprintf("%s, %s, %s, %p", _get_wc_str(int_arg(1)), flags_str, - _struct_compat_timespec_u(req_uaddr, 1), - pointer_arg(4)) -} -probe nd_syscall.compat_clock_nanosleep.return = - kprobe.function("compat_clock_nanosleep").return ?, - kprobe.function("compat_sys_clock_nanosleep").return ? -{ - name = "clock_nanosleep" - retstr = returnstr(1) -} - # clock_settime ______________________________________________ # long sys_clock_settime(clockid_t which_clock, # const struct timespec __user *tp) diff --git a/tapset/linux/sysc_compat_clock_nanosleep.stp b/tapset/linux/sysc_compat_clock_nanosleep.stp new file mode 100644 index 000000000..21ab44d39 --- /dev/null +++ b/tapset/linux/sysc_compat_clock_nanosleep.stp @@ -0,0 +1,73 @@ +# compat_clock_nanosleep ________________________________________ +# +# long compat_clock_nanosleep(clockid_t which_clock, int flags, +# struct compat_timespec __user *rqtp, +# struct compat_timespec __user *rmtp) +# + +@define _SYSCALL_COMPAT_CLOCK_NANOSLEEP_NAME +%( + name = "clock_nanosleep" +%) + +@define _SYSCALL_COMPAT_CLOCK_NANOSLEEP_ARGSTR +%( + argstr = sprintf("%s, %s, %s, %p", clk_id_str, flags_str, + _struct_compat_timespec_u(req_uaddr, 1), rem_uaddr) +%) + +probe syscall.compat_clock_nanosleep = dw_syscall.compat_clock_nanosleep !, nd_syscall.compat_clock_nanosleep {} +probe syscall.compat_clock_nanosleep.return = dw_syscall.compat_clock_nanosleep.return !, nd_syscall.compat_clock_nanosleep.return {} + +# dw_compat_clock_nanosleep _____________________________________________________ + +probe dw_syscall.compat_clock_nanosleep = + kernel.function("compat_clock_nanosleep").call ?, + kernel.function("compat_sys_clock_nanosleep").call ? +{ + @_SYSCALL_COMPAT_CLOCK_NANOSLEEP_NAME + clk_id = __int32($which_clock) + clk_id_str = _get_wc_str(__int32($which_clock)) + flags = __int32($flags) +%(systemtap_v <= "2.6" %? + flag_str = _stp_clock_nanosleep_flags_str(__int32($flags)) +%) + flags_str = _stp_clock_nanosleep_flags_str(__int32($flags)) + req_uaddr = $rqtp + rem_uaddr = $rmtp + @_SYSCALL_COMPAT_CLOCK_NANOSLEEP_ARGSTR +} +probe dw_syscall.compat_clock_nanosleep.return = + kernel.function("compat_clock_nanosleep").return ?, + kernel.function("compat_sys_clock_nanosleep").return ? +{ + @_SYSCALL_COMPAT_CLOCK_NANOSLEEP_NAME + retstr = return_str(1, $return) +} + +# nd_compat_clock_nanosleep _____________________________________________________ + +probe nd_syscall.compat_clock_nanosleep = + kprobe.function("compat_clock_nanosleep").call ?, + kprobe.function("compat_sys_clock_nanosleep").call ? +{ + @_SYSCALL_COMPAT_CLOCK_NANOSLEEP_NAME + asmlinkage() + clk_id = int_arg(1) + clk_id_str = _get_wc_str(clk_id) + flags = int_arg(2) +%(systemtap_v <= "2.6" %? + flag_str = _stp_clock_nanosleep_flags_str(flags) +%) + flags_str = _stp_clock_nanosleep_flags_str(flags) + req_uaddr = pointer_arg(3) + rem_uaddr = pointer_arg(4) + @_SYSCALL_COMPAT_CLOCK_NANOSLEEP_ARGSTR +} +probe nd_syscall.compat_clock_nanosleep.return = + kprobe.function("compat_clock_nanosleep").return ?, + kprobe.function("compat_sys_clock_nanosleep").return ? +{ + @_SYSCALL_COMPAT_CLOCK_NANOSLEEP_NAME + retstr = returnstr(1) +} diff --git a/tapset/linux/syscalls.stp b/tapset/linux/syscalls.stp index dda5af041..defa36032 100644 --- a/tapset/linux/syscalls.stp +++ b/tapset/linux/syscalls.stp @@ -1,35 +1,4 @@ -# compat_clock_nanosleep ________________________________________ -# -# long compat_clock_nanosleep(clockid_t which_clock, int flags, -# struct compat_timespec __user *rqtp, -# struct compat_timespec __user *rmtp) -# -probe syscall.compat_clock_nanosleep = - kernel.function("compat_clock_nanosleep").call ?, - kernel.function("compat_sys_clock_nanosleep").call ? -{ - name = "clock_nanosleep" - clk_id = __int32($which_clock) - clk_id_str = _get_wc_str(__int32($which_clock)) - flags = __int32($flags) -%(systemtap_v <= "2.6" %? - flag_str = _stp_clock_nanosleep_flags_str(__int32($flags)) -%) - flags_str = _stp_clock_nanosleep_flags_str(__int32($flags)) - req_uaddr = $rqtp - rem_uaddr = $rmtp - argstr = sprintf("%s, %s, %s, %p", _get_wc_str($which_clock), - flags_str, _struct_compat_timespec_u($rqtp, 1), $rmtp) -} -probe syscall.compat_clock_nanosleep.return = - kernel.function("compat_clock_nanosleep").return ?, - kernel.function("compat_sys_clock_nanosleep").return ? -{ - name = "clock_nanosleep" - retstr = return_str(1, $return) -} - # clock_settime ______________________________________________ # long sys_clock_settime(clockid_t which_clock, # const struct timespec __user *tp)