From 008845068ee4df8befb8a6a1c7fa456ad1fcc6f8 Mon Sep 17 00:00:00 2001 From: Martin Cermak Date: Thu, 22 Dec 2016 17:17:15 +0100 Subject: [PATCH] PR20333/fadvise64 --- tapset/linux/nd_syscalls.stp | 31 ---------------- tapset/linux/sysc_fadvise64.stp | 64 +++++++++++++++++++++++++++++++++ tapset/linux/syscalls.stp | 21 ----------- 3 files changed, 64 insertions(+), 52 deletions(-) create mode 100644 tapset/linux/sysc_fadvise64.stp diff --git a/tapset/linux/nd_syscalls.stp b/tapset/linux/nd_syscalls.stp index 683a6dcbd..dd6351d3c 100644 --- a/tapset/linux/nd_syscalls.stp +++ b/tapset/linux/nd_syscalls.stp @@ -1,35 +1,4 @@ -# fadvise64 __________________________________________________ -# long sys_fadvise64(int fd, loff_t offset, size_t len, int advice) -# -probe nd_syscall.fadvise64 = kprobe.function("sys_fadvise64") ? -{ - asmlinkage() - @__syscall_gate_compat_simple - name = "fadvise64" - fd = int_arg(1) -%( CONFIG_64BIT == "y" %? - offset = longlong_arg(2) - len = long_arg(3) - advice = int_arg(4) -%: - # On a 32-bit kernel, 'long long' arguments take the space of - # 2 arguments, so we have to adjust the following argument - # numbers. - offset = longlong_arg(2) - len = long_arg(4) - advice = int_arg(5) -%) - argstr = sprintf("%d, %d, %d, %s", fd, offset, len, - _fadvice_advice_str(advice)) -} -probe nd_syscall.fadvise64.return = kprobe.function("sys_fadvise64").return ? -{ - @__syscall_gate_compat_simple - name = "fadvise64" - retstr = returnstr(1) -} - # fadvise64_64 _______________________________________________ # long sys_fadvise64_64(int fd, loff_t offset, loff_t len, int advice) # diff --git a/tapset/linux/sysc_fadvise64.stp b/tapset/linux/sysc_fadvise64.stp new file mode 100644 index 000000000..493d5897a --- /dev/null +++ b/tapset/linux/sysc_fadvise64.stp @@ -0,0 +1,64 @@ +# fadvise64 __________________________________________________ +# long sys_fadvise64(int fd, loff_t offset, size_t len, int advice) +# + +@define _SYSCALL_FADVISE64_NAME +%( + name = "fadvise64" +%) + +@define _SYSCALL_FADVISE64_ARGSTR +%( + argstr = sprintf("%d, %d, %d, %s", fd, offset, len, _fadvice_advice_str(advice)) +%) + +probe syscall.fadvise64 = dw_syscall.fadvise64 !, nd_syscall.fadvise64 {} +probe syscall.fadvise64.return = dw_syscall.fadvise64.return !, nd_syscall.fadvise64.return {} + +# dw_fadvise64 _____________________________________________________ + +probe dw_syscall.fadvise64 = kernel.function("sys_fadvise64").call ? +{ + @_SYSCALL_FADVISE64_NAME + @__syscall_gate_compat_simple + fd = __int32(@choose_defined($fd, 0)) + offset = @choose_defined($offset, 0) + len = __long(@choose_defined($len, 0)) + advice = __int32(@choose_defined($advice, 0)) + @_SYSCALL_FADVISE64_ARGSTR +} +probe dw_syscall.fadvise64.return = kernel.function("sys_fadvise64").return ? +{ + @__syscall_gate_compat_simple + @_SYSCALL_FADVISE64_NAME + retstr = return_str(1, $return) +} + +# nd_fadvise64 _____________________________________________________ + +probe nd_syscall.fadvise64 = kprobe.function("sys_fadvise64") ? +{ + asmlinkage() + @__syscall_gate_compat_simple + @_SYSCALL_FADVISE64_NAME + fd = int_arg(1) +%( CONFIG_64BIT == "y" %? + offset = longlong_arg(2) + len = long_arg(3) + advice = int_arg(4) +%: + # On a 32-bit kernel, 'long long' arguments take the space of + # 2 arguments, so we have to adjust the following argument + # numbers. + offset = longlong_arg(2) + len = long_arg(4) + advice = int_arg(5) +%) + @_SYSCALL_FADVISE64_ARGSTR +} +probe nd_syscall.fadvise64.return = kprobe.function("sys_fadvise64").return ? +{ + @__syscall_gate_compat_simple + @_SYSCALL_FADVISE64_NAME + retstr = returnstr(1) +} diff --git a/tapset/linux/syscalls.stp b/tapset/linux/syscalls.stp index 41c075a55..33af5efb2 100644 --- a/tapset/linux/syscalls.stp +++ b/tapset/linux/syscalls.stp @@ -1,25 +1,4 @@ -# fadvise64 __________________________________________________ -# long sys_fadvise64(int fd, loff_t offset, size_t len, int advice) -# -probe syscall.fadvise64 = kernel.function("sys_fadvise64").call ? -{ - name = "fadvise64" - @__syscall_gate_compat_simple - fd = __int32(@choose_defined($fd, 0)) - offset = @choose_defined($offset, 0) - len = __long(@choose_defined($len, 0)) - advice = __int32(@choose_defined($advice, 0)) - argstr = sprintf("%d, %d, %d, %s", fd, offset, len, - _fadvice_advice_str(advice)) -} -probe syscall.fadvise64.return = kernel.function("sys_fadvise64").return ? -{ - @__syscall_gate_compat_simple - name = "fadvise64" - retstr = return_str(1, $return) -} - # fadvise64_64 _______________________________________________ # long sys_fadvise64_64(int fd, loff_t offset, loff_t len, int advice) # -- 2.43.5