From: Martin Cermak Date: Mon, 2 Jan 2017 06:42:40 +0000 (+0100) Subject: PR20333/mq_getsetattr X-Git-Tag: release-3.1~372 X-Git-Url: https://sourceware.org/git/?a=commitdiff_plain;h=af7bd3fdc187b9a4e0a5b69c50482b0ddba74c56;p=systemtap.git PR20333/mq_getsetattr --- diff --git a/tapset/linux/nd_syscalls.stp b/tapset/linux/nd_syscalls.stp index 579d86925..9b940d92c 100644 --- a/tapset/linux/nd_syscalls.stp +++ b/tapset/linux/nd_syscalls.stp @@ -1,39 +1,4 @@ -# mq_getsetattr ______________________________________________ -# long sys_mq_getsetattr(mqd_t mqdes, -# const struct mq_attr __user *u_mqstat, -# struct mq_attr __user *u_omqstat) -# long compat_sys_mq_getsetattr(mqd_t mqdes, -# const struct compat_mq_attr __user *u_mqstat, -# struct compat_mq_attr __user *u_omqstat) -# -probe nd_syscall.mq_getsetattr = - __nd_syscall.mq_getsetattr ?, - kprobe.function("compat_sys_mq_getsetattr") ? -{ - name = "mq_getsetattr" - asmlinkage() - mqdes = int_arg(1) - u_mqstat_uaddr = pointer_arg(2) - u_omqstat_uaddr = pointer_arg(3) - argstr = sprintf("%d, %p, %p", mqdes, u_mqstat_uaddr, u_omqstat_uaddr) -} -probe __nd_syscall.mq_getsetattr = kprobe.function("sys_mq_getsetattr") -{ - @__syscall_gate(@const("__NR_mq_getsetattr")) -} -probe nd_syscall.mq_getsetattr.return = - __nd_syscall.mq_getsetattr.return ?, - kprobe.function("compat_sys_mq_getsetattr").return ? -{ - name = "mq_getsetattr" - retstr = returnstr(1) -} -probe __nd_syscall.mq_getsetattr.return = kprobe.function("sys_mq_getsetattr").return -{ - @__syscall_gate(@const("__NR_mq_getsetattr")) -} - # mq_notify __________________________________________________ # long sys_mq_notify(mqd_t mqdes, const struct sigevent __user *u_notification) # long compat_sys_mq_notify(mqd_t mqdes, const struct compat_sigevent __user *u_notification) diff --git a/tapset/linux/sysc_mq_getsetattr.stp b/tapset/linux/sysc_mq_getsetattr.stp new file mode 100644 index 000000000..a07c93bcb --- /dev/null +++ b/tapset/linux/sysc_mq_getsetattr.stp @@ -0,0 +1,78 @@ +# mq_getsetattr ______________________________________________ +# long sys_mq_getsetattr(mqd_t mqdes, +# const struct mq_attr __user *u_mqstat, +# struct mq_attr __user *u_omqstat) +# long compat_sys_mq_getsetattr(mqd_t mqdes, +# const struct compat_mq_attr __user *u_mqstat, +# struct compat_mq_attr __user *u_omqstat) +# + +@define _SYSCALL_MQ_GETSETATTR_NAME +%( + name = "mq_getsetattr" +%) + +@define _SYSCALL_MQ_GETSETATTR_ARGSTR +%( + argstr = sprintf("%d, %p, %p", mqdes, u_mqstat_uaddr, u_omqstat_uaddr) +%) + +probe syscall.mq_getsetattr = dw_syscall.mq_getsetattr !, nd_syscall.mq_getsetattr {} +probe syscall.mq_getsetattr.return = dw_syscall.mq_getsetattr.return !, nd_syscall.mq_getsetattr.return {} + +# dw_mq_getsetattr _____________________________________________________ + +probe dw_syscall.mq_getsetattr = + __syscall.mq_getsetattr, + kernel.function("compat_sys_mq_getsetattr").call ? +{ + @_SYSCALL_MQ_GETSETATTR_NAME + mqdes = __int32($mqdes) + u_mqstat_uaddr = $u_mqstat + u_omqstat_uaddr = $u_omqstat + @_SYSCALL_MQ_GETSETATTR_ARGSTR +} +probe __syscall.mq_getsetattr = kernel.function("sys_mq_getsetattr").call +{ + @__syscall_gate(@const("__NR_mq_getsetattr")) +} +probe dw_syscall.mq_getsetattr.return = + __syscall.mq_getsetattr.return, + kernel.function("compat_sys_mq_getsetattr").return ? +{ + @_SYSCALL_MQ_GETSETATTR_NAME + retstr = return_str(1, $return) +} +probe __syscall.mq_getsetattr.return = kernel.function("sys_mq_getsetattr").return +{ + @__syscall_gate(@const("__NR_mq_getsetattr")) +} + +# nd_mq_getsetattr _____________________________________________________ + +probe nd_syscall.mq_getsetattr = + __nd_syscall.mq_getsetattr ?, + kprobe.function("compat_sys_mq_getsetattr") ? +{ + @_SYSCALL_MQ_GETSETATTR_NAME + asmlinkage() + mqdes = int_arg(1) + u_mqstat_uaddr = pointer_arg(2) + u_omqstat_uaddr = pointer_arg(3) + @_SYSCALL_MQ_GETSETATTR_ARGSTR +} +probe __nd_syscall.mq_getsetattr = kprobe.function("sys_mq_getsetattr") +{ + @__syscall_gate(@const("__NR_mq_getsetattr")) +} +probe nd_syscall.mq_getsetattr.return = + __nd_syscall.mq_getsetattr.return ?, + kprobe.function("compat_sys_mq_getsetattr").return ? +{ + @_SYSCALL_MQ_GETSETATTR_NAME + retstr = returnstr(1) +} +probe __nd_syscall.mq_getsetattr.return = kprobe.function("sys_mq_getsetattr").return +{ + @__syscall_gate(@const("__NR_mq_getsetattr")) +} diff --git a/tapset/linux/syscalls.stp b/tapset/linux/syscalls.stp index b16d1b6d9..415f56f15 100644 --- a/tapset/linux/syscalls.stp +++ b/tapset/linux/syscalls.stp @@ -1,38 +1,4 @@ -# mq_getsetattr ______________________________________________ -# long sys_mq_getsetattr(mqd_t mqdes, -# const struct mq_attr __user *u_mqstat, -# struct mq_attr __user *u_omqstat) -# long compat_sys_mq_getsetattr(mqd_t mqdes, -# const struct compat_mq_attr __user *u_mqstat, -# struct compat_mq_attr __user *u_omqstat) -# -probe syscall.mq_getsetattr = - __syscall.mq_getsetattr, - kernel.function("compat_sys_mq_getsetattr").call ? -{ - name = "mq_getsetattr" - mqdes = __int32($mqdes) - u_mqstat_uaddr = $u_mqstat - u_omqstat_uaddr = $u_omqstat - argstr = sprintf("%d, %p, %p", mqdes, u_mqstat_uaddr, u_omqstat_uaddr) -} -probe __syscall.mq_getsetattr = kernel.function("sys_mq_getsetattr").call -{ - @__syscall_gate(@const("__NR_mq_getsetattr")) -} -probe syscall.mq_getsetattr.return = - __syscall.mq_getsetattr.return, - kernel.function("compat_sys_mq_getsetattr").return ? -{ - name = "mq_getsetattr" - retstr = return_str(1, $return) -} -probe __syscall.mq_getsetattr.return = kernel.function("sys_mq_getsetattr").return -{ - @__syscall_gate(@const("__NR_mq_getsetattr")) -} - # mq_notify __________________________________________________ # long sys_mq_notify(mqd_t mqdes, const struct sigevent __user *u_notification) # long compat_sys_mq_notify(mqd_t mqdes, const struct compat_sigevent __user *u_notification)