summaryrefslogtreecommitdiffstats
path: root/tapset/nd_syscalls.stp
diff options
context:
space:
mode:
authorJim Keniston <jkenisto@us.ibm.com>2008-05-13 15:34:00 -0700
committerJim Keniston <jkenisto@us.ibm.com>2008-05-13 15:34:00 -0700
commitac158744658d392301e55e42ab53d246de8bc61e (patch)
tree610e7d071faf82e7e080cebcfd29e569f9a0ddce /tapset/nd_syscalls.stp
parent9f39274f44ddf885b311682f313a2dcafcdc9040 (diff)
downloadsystemtap-steved-ac158744658d392301e55e42ab53d246de8bc61e.tar.gz
systemtap-steved-ac158744658d392301e55e42ab53d246de8bc61e.tar.xz
systemtap-steved-ac158744658d392301e55e42ab53d246de8bc61e.zip
Converted more aliases to use arg numbers instead of names. In particular,
converted the aliases for futex, getrusage, and mq_open -- which presented problems when this tapset is used without dwarf, even if those aliases aren't used.
Diffstat (limited to 'tapset/nd_syscalls.stp')
-rw-r--r--tapset/nd_syscalls.stp369
1 files changed, 265 insertions, 104 deletions
diff --git a/tapset/nd_syscalls.stp b/tapset/nd_syscalls.stp
index eb5efda0..5697cd21 100644
--- a/tapset/nd_syscalls.stp
+++ b/tapset/nd_syscalls.stp
@@ -8,6 +8,15 @@
// Public License (GPL); either version 2, or (at your option) any
// later version.
+/*
+ * nd_syscalls.stp is a copy of syscalls.stp, modified to refer to
+ * function arguments by number rather than name, so that this tapset
+ * can be used even when the probed kernel lacks debugging information.
+ *
+ * So far, the names-to-numbers conversion covers only syscall.a*
+ * through syscall.c*, plus a few others.
+ */
+
/* Each syscall returns the calls parameters. In addition, the following
* variables are set:
@@ -88,16 +97,27 @@ probe nd_syscall.acct.return = kernel.function("sys_acct").return ? {
#
probe nd_syscall.add_key = kernel.function("sys_add_key") ? {
name = "add_key"
- type_uaddr = $_type
- description_auddr = $_description
- payload_uaddr = $_payload
- plen = $plen
- ringid = $ringid
+ // type_uaddr = $_type
+ // description_auddr = $_description
+ // payload_uaddr = $_payload
+ // plen = $plen
+ // ringid = $ringid
+ // argstr = sprintf("%s, %s, %s, %d, %d",
+ // user_string_quoted($_type),
+ // user_string_quoted($_description),
+ // text_strn(user_string($_payload),syscall_string_trunc,1),
+ // $plen, $ringid)
+ asmlinkage()
+ type_uaddr = pointer_arg(1)
+ description_uaddr = pointer_arg(2)
+ payload_uaddr = pointer_arg(3)
+ plen = ulong_arg(4)
+ ringid = int_arg(5)
argstr = sprintf("%s, %s, %s, %d, %d",
- user_string_quoted($_type),
- user_string_quoted($_description),
- text_strn(user_string($_payload),syscall_string_trunc,1),
- $plen, $ringid)
+ user_string_quoted(type_uaddr),
+ user_string_quoted(description_uaddr),
+ text_strn(user_string(payload_uaddr),syscall_string_trunc,1),
+ plen, ringid)
}
probe nd_syscall.add_key.return = kernel.function("sys_add_key").return ? {
name = "add_key"
@@ -122,16 +142,21 @@ probe nd_syscall.adjtimex = kernel.function("sys_adjtimex") {
* buf_time_tv_usec = __uget_timex_m($txc_p,10)
* buf_tick = __uget_timex_m($txc_p,11)
*/
- argstr = sprintf("%p", $txc_p)
+ // argstr = sprintf("%p", $txc_p)
+ asmlinkage()
+ argstr = sprintf("%p", pointer_arg(1))
}
probe nd_syscall.adjtimex.return = kernel.function("sys_adjtimex").return {
name = "adjtimex"
- retstr = _adjtimex_return_str($return)
+ // retstr = _adjtimex_return_str($return)
+ retstr = _adjtimex_return_str(returnval())
}
# long compat_sys_adjtimex(struct compat_timex __user *utp)
probe nd_syscall.compat_adjtimex = kernel.function("compat_sys_adjtimex") ? {
name = "compat_adjtimex"
- argstr = sprintf("%p", $utp)
+ // argstr = sprintf("%p", $utp)
+ asmlinkage()
+ argstr = sprintf("%p", pointer_arg(1))
}
probe nd_syscall.compat_adjtimex.return = kernel.function("compat_sys_adjtimex").return ? {
name = "compat_adjtimex"
@@ -147,8 +172,11 @@ probe nd_syscall.alarm =
kernel.function("sys32_alarm") ?
{
name = "alarm"
- seconds = $seconds
- argstr = sprint($seconds)
+ // seconds = $seconds
+ // argstr = sprint($seconds)
+ asmlinkage()
+ seconds = uint_arg(1)
+ argstr = sprint(seconds)
}
probe nd_syscall.alarm.return =
kernel.function("sys_alarm").return ?,
@@ -162,12 +190,19 @@ probe nd_syscall.alarm.return =
# long sys_bdflush(int func,long data)
probe nd_syscall.bdflush = kernel.function("sys_bdflush") ? {
name = "bdflush"
- func = $func
- data = $data
- if (($func>=2)&&($func%2==0))
- data_str = sprintf("%p", $data)
+ // func = $func
+ // data = $data
+ // if (($func>=2)&&($func%2==0))
+ // data_str = sprintf("%p", $data)
+ // else
+ // data_str = sprintf("%d", $data)
+ asmlinkage()
+ func = int_arg(1)
+ data = long_arg(2)
+ if ((func>=2)&&(func%2==0))
+ data_str = sprintf("%p", data)
else
- data_str = sprintf("%d", $data)
+ data_str = sprintf("%d", data)
argstr = sprintf("%d, %s",func, data_str)
}
probe nd_syscall.bdflush.return = kernel.function("sys_bdflush").return ? {
@@ -179,10 +214,15 @@ probe nd_syscall.bdflush.return = kernel.function("sys_bdflush").return ? {
# long sys_bind(int fd, struct sockaddr __user *umyaddr, int addrlen)
probe nd_syscall.bind = kernel.function("sys_bind") ? {
name = "bind"
- sockfd = $fd
- my_addr_uaddr = $umyaddr
- addrlen = $addrlen
- argstr = sprintf("%d, %s, %d", $fd, _struct_sockaddr_u($umyaddr,$addrlen),$addrlen)
+ // sockfd = $fd
+ // my_addr_uaddr = $umyaddr
+ // addrlen = $addrlen
+ // argstr = sprintf("%d, %s, %d", $fd, _struct_sockaddr_u($umyaddr,$addrlen),$addrlen)
+ asmlinkage()
+ sockfd = int_arg(1)
+ my_addr_uaddr = pointer_arg(2)
+ addrlen = int_arg(3)
+ argstr = sprintf("%d, %s, %d", sockfd, _struct_sockaddr_u(my_addr_uaddr,addrlen),addrlen)
}
probe nd_syscall.bind.return = kernel.function("sys_bind").return ? {
name = "bind"
@@ -196,7 +236,9 @@ probe nd_syscall.brk =
kernel.function("ia64_brk") ?
{
name = "brk"
- brk = $brk
+ // brk = $brk
+ asmlinkage()
+ brk = ulong_arg(1)
argstr = sprintf("%p", brk)
}
probe nd_syscall.brk.return =
@@ -222,9 +264,13 @@ probe nd_syscall.brk.return =
# long sys_capget(cap_user_header_t header, cap_user_data_t dataptr)
probe nd_syscall.capget = kernel.function("sys_capget") {
name = "capget"
- header_uaddr = $header
- data_uaddr = $dataptr
- argstr = sprintf("%p, %p", $header, $dataptr)
+ // header_uaddr = $header
+ // data_uaddr = $dataptr
+ // argstr = sprintf("%p, %p", $header, $dataptr)
+ asmlinkage()
+ header_uaddr = pointer_arg(1)
+ data_uaddr = pointer_arg(2)
+ argstr = sprintf("%p, %p", header_uaddr, data_uaddr)
}
probe nd_syscall.capget.return = kernel.function("sys_capget").return {
name = "capget"
@@ -245,9 +291,13 @@ probe nd_syscall.capget.return = kernel.function("sys_capget").return {
# long sys_capset(cap_user_header_t header, const cap_user_data_t data)
probe nd_syscall.capset = kernel.function("sys_capset") {
name = "capset"
- header_uaddr = $header
- data_uaddr = $data
- argstr = sprintf("%p, %p", $header, $data)
+ // header_uaddr = $header
+ // data_uaddr = $data
+ // argstr = sprintf("%p, %p", $header, $data)
+ asmlinkage()
+ header_uaddr = pointer_arg(1)
+ data_uaddr = pointer_arg(2)
+ argstr = sprintf("%p, %p", header_uaddr, data_uaddr)
}
probe nd_syscall.capset.return = kernel.function("sys_capset").return {
name = "capset"
@@ -258,8 +308,11 @@ probe nd_syscall.capset.return = kernel.function("sys_capset").return {
# long sys_chdir(const char __user * filename)
probe nd_syscall.chdir = kernel.function("sys_chdir") {
name = "chdir"
- path = user_string($filename)
- argstr = user_string_quoted($filename)
+ // path = user_string($filename)
+ // argstr = user_string_quoted($filename)
+ asmlinkage()
+ path = user_string(pointer_arg(1))
+ argstr = user_string_quoted(pointer_arg(1))
}
probe nd_syscall.chdir.return = kernel.function("sys_chdir").return {
name = "chdir"
@@ -270,9 +323,13 @@ probe nd_syscall.chdir.return = kernel.function("sys_chdir").return {
# long sys_chmod(const char __user * filename, mode_t mode)
probe nd_syscall.chmod = kernel.function("sys_chmod") {
name = "chmod"
- path = user_string($filename)
- mode = $mode
- argstr = sprintf("%s, %#o", user_string_quoted($filename), mode)
+ // path = user_string($filename)
+ // mode = $mode
+ // argstr = sprintf("%s, %#o", user_string_quoted($filename), mode)
+ asmlinkage()
+ path = user_string(pointer_arg(1))
+ mode = uint_arg(2)
+ argstr = sprintf("%s, %#o", user_string_quoted(pointer_arg(1)), mode)
}
probe nd_syscall.chmod.return = kernel.function("sys_chmod").return {
name = "chmod"
@@ -283,10 +340,15 @@ probe nd_syscall.chmod.return = kernel.function("sys_chmod").return {
# long sys_chown(const char __user * filename, uid_t user, gid_t group)
probe nd_syscall.chown = kernel.function("sys_chown") {
name = "chown"
- path = user_string($filename)
- owner = __int32($user)
- group = __int32($group)
- argstr = sprintf("%s, %d, %d",user_string_quoted($filename), owner, group)
+ // path = user_string($filename)
+ // owner = __int32($user)
+ // group = __int32($group)
+ // argstr = sprintf("%s, %d, %d",user_string_quoted($filename), owner, group)
+ asmlinkage()
+ path = user_string(pointer_arg(1))
+ owner = __int32(uint_arg(2))
+ group = __int32(uint_arg(3))
+ argstr = sprintf("%s, %d, %d",user_string_quoted(pointer_arg(1)), owner, group)
}
probe nd_syscall.chown.return = kernel.function("sys_chown").return {
name = "chown"
@@ -298,10 +360,15 @@ probe nd_syscall.chown.return = kernel.function("sys_chown").return {
#
probe nd_syscall.chown16 = kernel.function("sys_chown16") ? {
name = "chown16"
- path = user_string($filename)
- owner = __short($user)
- group = __short($group)
- argstr = sprintf("%s, %d, %d", user_string_quoted($filename), owner, group)
+ // path = user_string($filename)
+ // owner = __short($user)
+ // group = __short($group)
+ // argstr = sprintf("%s, %d, %d", user_string_quoted($filename), owner, group)
+ asmlinkage()
+ path = user_string(pointer_arg(1))
+ owner = __short(uint_arg(2))
+ group = __short(uint_arg(3))
+ argstr = sprintf("%s, %d, %d", user_string_quoted(pointer_arg(1)), owner, group)
}
probe nd_syscall.chown16.return = kernel.function("sys_chown16").return ? {
name = "chown16"
@@ -312,8 +379,11 @@ probe nd_syscall.chown16.return = kernel.function("sys_chown16").return ? {
# long sys_chroot(const char __user * filename)
probe nd_syscall.chroot = kernel.function("sys_chroot") {
name = "chroot"
- path = user_string($filename)
- argstr = user_string_quoted($filename)
+ // path = user_string($filename)
+ // argstr = user_string_quoted($filename)
+ asmlinkage()
+ path = user_string(pointer_arg(1))
+ argstr = user_string_quoted(pointer_arg(1))
}
probe nd_syscall.chroot.return = kernel.function("sys_chroot").return {
name = "chroot"
@@ -329,10 +399,15 @@ probe nd_syscall.clock_getres =
kernel.function("compat_clock_getres") ?
{
name = "clock_getres"
- clk_id = $which_clock
- clk_id_str = _get_wc_str($which_clock)
- res_uaddr = $tp
- argstr = sprintf("%s, %p", _get_wc_str($which_clock), $tp)
+ // clk_id = $which_clock
+ // clk_id_str = _get_wc_str($which_clock)
+ // res_uaddr = $tp
+ // argstr = sprintf("%s, %p", _get_wc_str($which_clock), $tp)
+ asmlinkage()
+ 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.return =
kernel.function("sys_clock_getres").return,
@@ -349,9 +424,13 @@ probe nd_syscall.clock_gettime =
kernel.function("sys_clock_gettime")
{
name = "clock_gettime"
- clk_id = $which_clock
- clk_id_str = _get_wc_str($which_clock)
- argstr = sprintf("%s, %p", _get_wc_str($which_clock), $tp)
+ // clk_id = $which_clock
+ // clk_id_str = _get_wc_str($which_clock)
+ // argstr = sprintf("%s, %p", _get_wc_str($which_clock), $tp)
+ asmlinkage()
+ clk_id = int_arg(1)
+ clk_id_str = _get_wc_str(clk_id)
+ argstr = sprintf("%s, %p", clk_id_str, pointer_arg(2))
}
probe nd_syscall.clock_gettime.return = kernel.function("sys_clock_gettime").return
{
@@ -367,12 +446,20 @@ probe nd_syscall.clock_gettime.return = kernel.function("sys_clock_gettime").ret
#
probe nd_syscall.clock_nanosleep = kernel.function("sys_clock_nanosleep") {
name = "clock_nanosleep"
- if ($flags == 1)
+ // if ($flags == 1)
+ // flag_str = "TIMER_ABSTIME"
+ // else
+ // flag_str = sprintf("0x%x", $flags)
+ // argstr = sprintf("%s, %s, %s, %p", _get_wc_str($which_clock), flag_str,
+ // _struct_timespec_u($rqtp,1), $rmtp)
+ asmlinkage()
+ flags = int_arg(2)
+ if (flags == 1)
flag_str = "TIMER_ABSTIME"
else
- flag_str = sprintf("0x%x", $flags)
- argstr = sprintf("%s, %s, %s, %p", _get_wc_str($which_clock), flag_str,
- _struct_timespec_u($rqtp,1), $rmtp)
+ flag_str = sprintf("0x%x", flags)
+ argstr = sprintf("%s, %s, %s, %p", _get_wc_str(int_arg(1)), flag_str,
+ _struct_timespec_u(pointer_arg(3),1), pointer_arg(4))
}
probe nd_syscall.clock_nanosleep.return = kernel.function("sys_clock_nanosleep").return {
name = "clock_nanosleep"
@@ -389,12 +476,21 @@ probe nd_syscall.compat_clock_nanosleep =
kernel.function("compat_sys_clock_nanosleep") ?
{
name = "compat_clock_nanosleep"
- if ($flags == 1)
+ // if ($flags == 1)
+ // flag_str = "TIMER_ABSTIME"
+ // else
+ // flag_str = sprintf("0x%x", $flags)
+ // argstr = sprintf("%s, %s, %s, %p", _get_wc_str($which_clock), flag_str,
+ // _struct_compat_timespec_u($rqtp,1), $rmtp)
+ asmlinkage()
+ flags = int_arg(2)
+ if (flags == 1)
flag_str = "TIMER_ABSTIME"
else
- flag_str = sprintf("0x%x", $flags)
- argstr = sprintf("%s, %s, %s, %p", _get_wc_str($which_clock), flag_str,
- _struct_compat_timespec_u($rqtp,1), $rmtp)
+ flag_str = sprintf("0x%x", flags)
+ argstr = sprintf("%s, %s, %s, %p", _get_wc_str(int_arg(1)), flag_str,
+ _struct_compat_timespec_u(pointer_arg(3),1),
+ pointer_arg(4))
}
probe nd_syscall.compat_clock_nanosleep.return =
kernel.function("compat_clock_nanosleep").return ?,
@@ -410,10 +506,15 @@ probe nd_syscall.compat_clock_nanosleep.return =
#
probe nd_syscall.clock_settime = kernel.function("sys_clock_settime") {
name = "clock_settime"
- clk_id = $which_clock
- clk_id_str = _get_wc_str($which_clock)
- tp_uaddr = $tp
- argstr = sprintf("%s, %s", clk_id_str, _struct_timespec_u($tp,1))
+ // clk_id = $which_clock
+ // clk_id_str = _get_wc_str($which_clock)
+ // tp_uaddr = $tp
+ // argstr = sprintf("%s, %s", clk_id_str, _struct_timespec_u($tp,1))
+ asmlinkage()
+ clk_id = int_arg(1)
+ clk_id_str = _get_wc_str(clk_id)
+ tp_uaddr = pointer_arg(2)
+ argstr = sprintf("%s, %s", clk_id_str, _struct_timespec_u(tp_uaddr,1))
}
probe nd_syscall.clock_settime.return = kernel.function("sys_clock_settime").return {
name = "clock_settime"
@@ -437,10 +538,15 @@ probe nd_syscall.close.return = kernel.function("sys_close").return {
# long sys_connect(int fd, struct sockaddr __user *uservaddr, int addrlen)
probe nd_syscall.connect = kernel.function("sys_connect") ? {
name = "connect"
- sockfd = $fd
- serv_addr_uaddr = $uservaddr
- addrlen = $addrlen
- argstr = sprintf("%d, %s, %d", $fd, _struct_sockaddr_u($uservaddr,$addrlen),$addrlen)
+ // sockfd = $fd
+ // serv_addr_uaddr = $uservaddr
+ // addrlen = $addrlen
+ // argstr = sprintf("%d, %s, %d", $fd, _struct_sockaddr_u($uservaddr,$addrlen),$addrlen)
+ asmlinkage()
+ sockfd = int_arg(1)
+ serv_addr_uaddr = pointer_arg(2)
+ addrlen = int_arg(3)
+ argstr = sprintf("%d, %s, %d", sockfd, _struct_sockaddr_u(serv_addr_uaddr,addrlen),addrlen)
}
probe nd_syscall.connect.return = kernel.function("sys_connect").return ? {
name = "connect"
@@ -452,9 +558,12 @@ probe nd_syscall.connect.return = kernel.function("sys_connect").return ? {
probe nd_syscall.creat = kernel.function("sys_creat") ?
{
name = "creat"
- mode = $mode
- pathname = user_string($pathname)
- argstr = sprintf("%s, %#o", user_string_quoted($pathname), $mode)
+ // mode = $mode
+ // pathname = user_string($pathname)
+ // argstr = sprintf("%s, %#o", user_string_quoted($pathname), $mode)
+ mode = int_arg(2)
+ pathname = user_string(pointer_arg(1))
+ argstr = sprintf("%s, %#o", user_string_quoted(pointer_arg(1)), mode)
}
probe nd_syscall.creat.return = kernel.function("sys_creat").return ?
{
@@ -1128,18 +1237,32 @@ probe nd_syscall.ftruncate64.return = kernel.function("sys_ftruncate64").return
#
probe nd_syscall.futex = kernel.function("sys_futex") ? {
name = "futex"
- futex_uaddr = $uaddr
- op = $op
- val = $val
- utime_uaddr = $utime
- uaddr2_uaddr = $uaddr2
- val3 = $val3
+ // futex_uaddr = $uaddr
+ // op = $op
+ // val = $val
+ // utime_uaddr = $utime
+ // uaddr2_uaddr = $uaddr2
+ // val3 = $val3
+ // if (op == 0)
+ // argstr = sprintf("%p, %s, %d, %s", $uaddr, _futex_op_str($op),
+ // $val, _struct_timespec_u($utime,1))
+ // else
+ // argstr = sprintf("%p, %s, %d", $uaddr, _futex_op_str($op),
+ // $val)
+ asmlinkage()
+ futex_uaddr = pointer_arg(1)
+ op = int_arg(2)
+ val = u32_arg(3)
+ utime_uaddr = pointer_arg(4)
+ uaddr2_uaddr = pointer_arg(5)
+ val3 = u32_arg(6)
if (op == 0)
- argstr = sprintf("%p, %s, %d, %s", $uaddr, _futex_op_str($op),
- $val, _struct_timespec_u($utime,1))
+ argstr = sprintf("%p, %s, %d, %s", futex_uaddr,
+ _futex_op_str(op), val,
+ _struct_timespec_u(utime_uaddr,1))
else
- argstr = sprintf("%p, %s, %d", $uaddr, _futex_op_str($op),
- $val)
+ argstr = sprintf("%p, %s, %d", futex_uaddr,
+ _futex_op_str(op), val)
}
probe nd_syscall.futex.return = kernel.function("sys_futex").return ? {
name = "futex"
@@ -1147,18 +1270,32 @@ probe nd_syscall.futex.return = kernel.function("sys_futex").return ? {
}
probe nd_syscall.compat_futex = kernel.function("compat_sys_futex") ? {
name = "futex"
- futex_uaddr = $uaddr
- op = $op
- val = $val
- utime_uaddr = $utime
- uaddr2_uaddr = $uaddr2
- val3 = $val3
+ // futex_uaddr = $uaddr
+ // op = $op
+ // val = $val
+ // utime_uaddr = $utime
+ // uaddr2_uaddr = $uaddr2
+ // val3 = $val3
+ // if (op == 0)
+ // argstr = sprintf("%p, %s, %d, %s", $uaddr, _futex_op_str($op),
+ // $val, _struct_compat_timespec_u($utime,1))
+ // else
+ // argstr = sprintf("%p, %s, %d", $uaddr, _futex_op_str($op),
+ // $val)
+ asmlinkage()
+ futex_uaddr = pointer_arg(1)
+ op = int_arg(2)
+ val = u32_arg(3)
+ utime_uaddr = pointer_arg(4)
+ uaddr2_uaddr = pointer_arg(5)
+ val3 = u32_arg(6)
if (op == 0)
- argstr = sprintf("%p, %s, %d, %s", $uaddr, _futex_op_str($op),
- $val, _struct_compat_timespec_u($utime,1))
+ argstr = sprintf("%p, %s, %d, %s", futex_uaddr,
+ _futex_op_str(op), val,
+ _struct_compat_timespec_u(utime_uaddr,1))
else
- argstr = sprintf("%p, %s, %d", $uaddr, _futex_op_str($op),
- $val)
+ argstr = sprintf("%p, %s, %d", futex_uaddr,
+ _futex_op_str(op), val)
}
probe nd_syscall.compat_futex.return = kernel.function("compat_sys_futex").return ? {
name = "futex"
@@ -1542,17 +1679,29 @@ probe nd_syscall.getrlimit.return = kernel.function("sys_getrlimit").return,
# long sys_getrusage(int who, struct rusage __user *ru)
probe nd_syscall.getrusage = kernel.function("sys_getrusage") {
name = "getrusage"
- who = $who
- if($who==-2)
+ // who = $who
+ // if($who==-2)
+ // {
+ // # RUSAGE_BOTH is not valid argument for sys_getrusage
+ // who_str = sprintf("UNKNOWN VALUE: %d", $who)
+ // }
+ // else
+ // {
+ // who_str = _rusage_who_str($who)
+ // }
+ // usage_uaddr = $ru
+ asmlinkage()
+ who = int_arg(1)
+ if(who==-2)
{
# RUSAGE_BOTH is not valid argument for sys_getrusage
- who_str = sprintf("UNKNOWN VALUE: %d", $who)
+ who_str = sprintf("UNKNOWN VALUE: %d", who)
}
else
{
- who_str = _rusage_who_str($who)
+ who_str = _rusage_who_str(who)
}
- usage_uaddr = $ru
+ usage_uaddr = pointer_arg(2)
argstr = sprintf("%s, %p", who_str, usage_uaddr)
}
probe nd_syscall.getrusage.return = kernel.function("sys_getrusage").return {
@@ -2561,16 +2710,28 @@ probe nd_syscall.mq_open =
kernel.function("compat_sys_mq_open") ?
{
name = "mq_open"
- name_uaddr = $u_name
- filename = user_string($u_name)
- mode = $mode
- u_attr_uaddr = $u_attr
- oflag = $oflag
+ // name_uaddr = $u_name
+ // filename = user_string($u_name)
+ // mode = $mode
+ // u_attr_uaddr = $u_attr
+ // oflag = $oflag
+ // if (oflag & 64)
+ // argstr = sprintf("%s, %s, %#o, %p", user_string_quoted($u_name),
+ // _sys_open_flag_str($oflag), $mode, $u_attr)
+ // else
+ // argstr = sprintf("%s, %s", user_string_quoted($u_name), _sys_open_flag_str($oflag))
+ asmlinkage()
+ name_uaddr = pointer_arg(1)
+ filename = user_string(name_uaddr)
+ mode = uint_arg(3)
+ u_attr_uaddr = pointer_arg(4)
+ oflag = int_arg(2)
if (oflag & 64)
- argstr = sprintf("%s, %s, %#o, %p", user_string_quoted($u_name),
- _sys_open_flag_str($oflag), $mode, $u_attr)
+ argstr = sprintf("%s, %s, %#o, %p",
+ user_string_quoted(name_uaddr),
+ _sys_open_flag_str(oflag), mode, u_attr_uaddr)
else
- argstr = sprintf("%s, %s", user_string_quoted($u_name), _sys_open_flag_str($oflag))
+ argstr = sprintf("%s, %s", user_string_quoted(name_uaddr), _sys_open_flag_str(oflag))
}
probe nd_syscall.mq_open.return =
kernel.function("sys_mq_open").return ?,