argstr = sprintf("%d, %p", dev, ubuf_uaddr)
}
-probe nd_syscall.ustat.return = kprobe.function("sys_ustat").return ?,
- kprobe.function("sys32_ustat").return ?,
- kprobe.function("compat_sys_ustat").return ?
+probe nd_syscall.ustat.return = kprobe.function("sys_ustat").return ?
+{
+ name = "ustat"
+ retstr = returnstr(1)
+}
+
+probe nd_syscall.ustat32.return = kprobe.function("sys32_ustat").return ?,
+ kprobe.function("compat_sys_ustat").return ?
{
name = "ustat"
retstr = returnstr(1)
# long sys32_ustat(unsigned dev, struct ustat32 __user *u32p)
# long compat_sys_ustat(unsigned dev, struct compat_ustat __user *u)
#
-# FIXME: the way the ustat/ustat32 probes are written, there is no
-# syscall.ustat32.return probe.
-#
probe syscall.ustat32 = kernel.function("compat_sys_ustat").call ?,
kernel.function("sys32_ustat").call ?
{
argstr = sprintf("%d, %p", $dev, @choose_defined($u, $u32p))
}
-probe syscall.ustat.return = kernel.function("sys_ustat").return ?,
- kernel.function("sys32_ustat").return ?,
- kernel.function("compat_sys_ustat").return ?
+probe syscall.ustat.return = kernel.function("sys_ustat").return ?
+{
+ name = "ustat"
+ retstr = return_str(1, $return)
+}
+
+probe syscall.ustat32.return = kernel.function("sys32_ustat").return ?,
+ kernel.function("compat_sys_ustat").return ?
{
name = "ustat"
retstr = return_str(1, $return)
printf("%s, %s\n", name, argstr)
printf("%d, %p\n", dev, ubuf_uaddr)
}
-probe nd_syscall.ustat.return
+probe nd_syscall.ustat.return, nd_syscall.ustat32.return
{
printf("%s, %s\n", name, retstr)
}
-# no nd_syscall.ustat32 return probe
probe nd_syscall.utime ?, nd_syscall.compat_utime ?
{
printf("%s, %s\n", name, argstr)
printf("%d, %p\n", dev, ubuf_uaddr)
}
-probe syscall.ustat.return
+probe syscall.ustat.return, syscall.ustat32.return ?
{
printf("%s, %s\n", name, retstr)
}
-# no syscall.ustat32 return probe
probe syscall.utime ?, syscall.compat_utime ?
{