From 3a63cbc7491faf52353dc41affe6e2788986be1d Mon Sep 17 00:00:00 2001 From: Martin Cermak Date: Thu, 22 Dec 2016 14:42:14 +0100 Subject: [PATCH] PR20333/clock_getres --- tapset/linux/nd_syscalls.stp | 33 ------------- tapset/linux/sysc_clock_getres.stp | 78 ++++++++++++++++++++++++++++++ tapset/linux/syscalls.stp | 32 ------------ 3 files changed, 78 insertions(+), 65 deletions(-) create mode 100644 tapset/linux/sysc_clock_getres.stp diff --git a/tapset/linux/nd_syscalls.stp b/tapset/linux/nd_syscalls.stp index 349d18b47..934addcfd 100644 --- a/tapset/linux/nd_syscalls.stp +++ b/tapset/linux/nd_syscalls.stp @@ -1,37 +1,4 @@ -# clock_getres _______________________________________________ -# long sys_clock_getres(clockid_t which_clock, struct timespec __user *tp) -# long compat_clock_getres(clockid_t which_clock, struct compat_timespec __user *tp) -# -probe nd_syscall.clock_getres = kprobe.function("compat_clock_getres") ?, - kprobe.function("compat_sys_clock_getres") ?, - __nd_syscall.clock_getres ? -{ - asmlinkage() - name = "clock_getres" - clk_id = int_arg(1) - clk_id_str = _get_wc_str(clk_id) - res_uaddr = pointer_arg(2) - argstr = sprintf("%s, %p", clk_id_str, res_uaddr) -} -probe __nd_syscall.clock_getres = kprobe.function("sys_clock_getres") -{ - @__syscall_gate(@const("__NR_clock_getres")) -} -probe nd_syscall.clock_getres.return = - kprobe.function("compat_clock_getres").return ?, - kprobe.function("compat_sys_clock_getres").return ?, - __nd_syscall.clock_getres.return ? -{ - name = "clock_getres" - retstr = returnstr(1) -} -probe __nd_syscall.clock_getres.return = - kprobe.function("sys_clock_getres").return -{ - @__syscall_gate(@const("__NR_clock_getres")) -} - # clock_gettime ______________________________________________ # long sys_clock_gettime(clockid_t which_clock, struct timespec __user *tp) # diff --git a/tapset/linux/sysc_clock_getres.stp b/tapset/linux/sysc_clock_getres.stp new file mode 100644 index 000000000..9d4c8d4ce --- /dev/null +++ b/tapset/linux/sysc_clock_getres.stp @@ -0,0 +1,78 @@ +# clock_getres _______________________________________________ +# long sys_clock_getres(clockid_t which_clock, struct timespec __user *tp) +# long compat_clock_getres(clockid_t which_clock, struct compat_timespec __user *tp) +# + +@define _SYSCALL_CLOCK_GETRES_NAME +%( + name = "clock_getres" +%) + +@define _SYSCALL_CLOCK_GETRES_ARGSTR +%( + argstr = sprintf("%s, %p", clk_id_str, res_uaddr) +%) + +probe syscall.clock_getres = dw_syscall.clock_getres !, nd_syscall.clock_getres {} +probe syscall.clock_getres.return = dw_syscall.clock_getres.return !, nd_syscall.clock_getres.return {} + +# dw_clock_getres _____________________________________________________ + +probe dw_syscall.clock_getres = kernel.function("compat_clock_getres").call ?, + kernel.function("compat_sys_clock_getres").call ?, + __syscall.clock_getres ? +{ + @_SYSCALL_CLOCK_GETRES_NAME + clk_id = __int32($which_clock) + clk_id_str = _get_wc_str(__int32($which_clock)) + res_uaddr = $tp + @_SYSCALL_CLOCK_GETRES_ARGSTR +} +probe __syscall.clock_getres = kernel.function("sys_clock_getres").call +{ + @__syscall_gate(@const("__NR_clock_getres")) +} +probe dw_syscall.clock_getres.return = + kernel.function("compat_clock_getres").return ?, + kernel.function("compat_sys_clock_getres").return ?, + __syscall.clock_getres.return ? +{ + @_SYSCALL_CLOCK_GETRES_NAME + retstr = return_str(1, $return) +} +probe __syscall.clock_getres.return = + kernel.function("sys_clock_getres").return +{ + @__syscall_gate(@const("__NR_clock_getres")) +} + +# nd_clock_getres _____________________________________________________ + +probe nd_syscall.clock_getres = kprobe.function("compat_clock_getres") ?, + kprobe.function("compat_sys_clock_getres") ?, + __nd_syscall.clock_getres ? +{ + asmlinkage() + @_SYSCALL_CLOCK_GETRES_NAME + clk_id = int_arg(1) + clk_id_str = _get_wc_str(clk_id) + res_uaddr = pointer_arg(2) + @_SYSCALL_CLOCK_GETRES_ARGSTR +} +probe __nd_syscall.clock_getres = kprobe.function("sys_clock_getres") +{ + @__syscall_gate(@const("__NR_clock_getres")) +} +probe nd_syscall.clock_getres.return = + kprobe.function("compat_clock_getres").return ?, + kprobe.function("compat_sys_clock_getres").return ?, + __nd_syscall.clock_getres.return ? +{ + @_SYSCALL_CLOCK_GETRES_NAME + retstr = returnstr(1) +} +probe __nd_syscall.clock_getres.return = + kprobe.function("sys_clock_getres").return +{ + @__syscall_gate(@const("__NR_clock_getres")) +} diff --git a/tapset/linux/syscalls.stp b/tapset/linux/syscalls.stp index dd35d01e5..73b94b45a 100644 --- a/tapset/linux/syscalls.stp +++ b/tapset/linux/syscalls.stp @@ -1,36 +1,4 @@ -# clock_getres _______________________________________________ -# long sys_clock_getres(clockid_t which_clock, struct timespec __user *tp) -# long compat_clock_getres(clockid_t which_clock, struct compat_timespec __user *tp) -# -probe syscall.clock_getres = kernel.function("compat_clock_getres").call ?, - kernel.function("compat_sys_clock_getres").call ?, - __syscall.clock_getres ? -{ - name = "clock_getres" - clk_id = __int32($which_clock) - clk_id_str = _get_wc_str(__int32($which_clock)) - res_uaddr = $tp - argstr = sprintf("%s, %p", _get_wc_str(__int32($which_clock)), $tp) -} -probe __syscall.clock_getres = kernel.function("sys_clock_getres").call -{ - @__syscall_gate(@const("__NR_clock_getres")) -} -probe syscall.clock_getres.return = - kernel.function("compat_clock_getres").return ?, - kernel.function("compat_sys_clock_getres").return ?, - __syscall.clock_getres.return ? -{ - name = "clock_getres" - retstr = return_str(1, $return) -} -probe __syscall.clock_getres.return = - kernel.function("sys_clock_getres").return -{ - @__syscall_gate(@const("__NR_clock_getres")) -} - # clock_gettime ______________________________________________ # long sys_clock_gettime(clockid_t which_clock, struct timespec __user *tp) # -- 2.43.5