summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorhien <hien>2006-02-16 00:39:58 +0000
committerhien <hien>2006-02-16 00:39:58 +0000
commit0359d745170dc9878bd7302a2757fb4752f084b2 (patch)
treefa0381ccf13ea5740986c9321d1658752af6a935
parentd487127ca05f400b1c4d244dde5f537118177a6c (diff)
downloadsystemtap-steved-0359d745170dc9878bd7302a2757fb4752f084b2.tar.gz
systemtap-steved-0359d745170dc9878bd7302a2757fb4752f084b2.tar.xz
systemtap-steved-0359d745170dc9878bd7302a2757fb4752f084b2.zip
Some progress but still more works.
-rw-r--r--tapset/syscalls2.stp74
1 files changed, 33 insertions, 41 deletions
diff --git a/tapset/syscalls2.stp b/tapset/syscalls2.stp
index ac34610a..0212c9dc 100644
--- a/tapset/syscalls2.stp
+++ b/tapset/syscalls2.stp
@@ -64,14 +64,7 @@ probe syscall.nanosleep = kernel.function("sys_nanosleep") {
name = "nanosleep"
req_uaddr = $rqtp
rem_uaddr = $rmtp
- /*
- * XXX NOT SAFE -- might sleep
- * req_tv_sec = __uget_ts_m($rqtp,0)
- * req_tv_nsec = __uget_ts_m($rqtp,1)
- * rem_tv_sec = __uget_ts_m($rmtp,0)
- * rem_tv_nsec = __uget_ts_m($rmtp,1)
- */
- argstr = sprintf("[0x%x], [0x%x]", req_uaddr, rem_uaddr)
+ argstr = _struct_timespec_u(req_uaddr)
}
probe syscall.nanosleep.return = kernel.function("sys_nanosleep").return {
name = "nanosleep"
@@ -166,7 +159,7 @@ probe syscall.nice =
kernel.function("sys_nice") {
name = "nice"
inc = $increment
- argstr = sprintf("0x%x", inc)
+ argstr = sprintf("%d", inc)
}
probe syscall.nice.return = kernel.function("sys_nice").return {
name = "nice"
@@ -210,7 +203,9 @@ probe syscall.old_getrlimit.return = kernel.function("sys_old_getrlimit").return
probe syscall.oldumount = kernel.function("sys_umount") {
name = "oldumount"
name_str = user_string($name)
- argstr = sprintf("%s", name_str)
+ /* man page 2 umount shows the argument name as "target" */
+ target = name_str
+ argstr = name_str
}
probe syscall.oldumount.return = kernel.function("sys_umount").return {
name = "oldumount"
@@ -320,7 +315,7 @@ probe syscall.personality.return = kernel.function("sys_personality").return {
probe syscall.pipe = kernel.function("sys_pipe") {
name = "pipe"
fildes_uaddr = $fildes
- argstr = sprintf("[0x%x]", fildes_uaddr)
+ argstr = _fildes_u(fildes_uaddr)
}
probe syscall.pipe.return = kernel.function("sys_pipe").return {
name = "pipe"
@@ -652,9 +647,9 @@ probe syscall.remap_file_pages.return =
#
probe syscall.removexattr = kernel.function("sys_removexattr") {
name = "removexattr"
- path_str = user_string($path)
+ path = user_string($path)
name_str = user_string($name)
- argstr = sprintf("%s, %s", path_str, name_str)
+ argstr = sprintf("%s, %s", path, name_str)
}
probe syscall.removexattr.return = kernel.function("sys_removexattr").return {
name = "removexattr"
@@ -668,9 +663,9 @@ probe syscall.removexattr.return = kernel.function("sys_removexattr").return {
#
probe syscall.rename = kernel.function("sys_rename") {
name = "rename"
- oldpath_str = user_string($oldname)
- newpath_str = user_string($newname)
- argstr = sprintf("%s, %s", oldpath_str, newpath_str)
+ oldpath = user_string($oldname)
+ newpath = user_string($newname)
+ argstr = sprintf("%s, %s", oldpath, newpath)
}
probe syscall.rename.return = kernel.function("sys_rename").return {
name = "rename"
@@ -718,8 +713,8 @@ probe syscall.restart_syscall.return =
#
probe syscall.rmdir = kernel.function("sys_rmdir") {
name = "rmdir"
- pathname_str = user_string($pathname)
- argstr = pathname_str
+ pathname = user_string($pathname)
+ argstr = pathname
}
probe syscall.rmdir.return = kernel.function("sys_rmdir").return {
name = "rmdir"
@@ -731,8 +726,7 @@ probe syscall.rmdir.return = kernel.function("sys_rmdir").return {
# sys_rt_sigaction(int sig,
# const struct sigaction __user *act,
# struct sigaction __user *oact,
-# size_t sigsetsize,
-# void __user *restorer)
+# size_t sigsetsize)
#
probe syscall.rt_sigaction = kernel.function("sys_rt_sigaction") {
name = "rt_sigaction"
@@ -740,11 +734,8 @@ probe syscall.rt_sigaction = kernel.function("sys_rt_sigaction") {
act_uaddr = $act
oact_uaddr = $oact
sigsetsize = $sigsetsize
- /*
- * unable to find local 'restorer' (maybe i386 specific)
- * restorer_uaddr = $restorer
- */
- argstr = sprintf("%d, [0x%x], [0x%x], 0x%x", sig,
+
+ argstr = sprintf("%s, [0x%x], [0x%x], 0x%x", _signal_name($sig),
act_uaddr, oact_uaddr, sigsetsize)
}
probe syscall.rt_sigaction.return = kernel.function("sys_rt_sigaction").return {
@@ -802,7 +793,7 @@ probe syscall.rt_sigqueueinfo = kernel.function("sys_rt_sigqueueinfo") {
pid = $pid
sig = $sig
uinfo_uaddr = $uinfo
- argstr = sprintf("0x%x, 0x%x, [0x%x]", pid, sig, uinfo_uaddr)
+ argstr = sprintf("0x%x, %s, [0x%x]", pid, _signal_name($sig), uinfo_uaddr)
}
probe syscall.rt_sigqueueinfo.return =
kernel.function("sys_rt_sigqueueinfo").return {
@@ -816,10 +807,7 @@ probe syscall.rt_sigqueueinfo.return =
#
probe syscall.rt_sigsuspend = kernel.function("sys_rt_sigsuspend") {
name = "rt_sigsuspend"
- /*
- * unsupported type identifier '$regs'
- * regs = $regs
- */
+ regs = $regs
argstr = ""
}
probe syscall.rt_sigsuspend.return = kernel.function("sys_rt_sigsuspend").return {
@@ -860,7 +848,7 @@ probe syscall.sched_getaffinity = kernel.function("sys_sched_getaffinity") {
pid = $pid
len = $len
mask_uaddr = $user_mask_ptr
- argstr = sprintf("0x%x, 0x%x, [0x%x]", pid, len, mask_uaddr)
+ argstr = sprintf("%d, 0x%x, [0x%x]", pid, len, mask_uaddr)
}
probe syscall.sched_getaffinity.return =
kernel.function("sys_sched_getaffinity").return {
@@ -877,7 +865,7 @@ probe syscall.sched_getparam = kernel.function("sys_sched_getparam") {
name = "sched_getparam"
pid = $pid
p_uaddr = $param
- argstr = ""
+ argstr = sprintf("%d, [0x%x]", pid, p_uaddr)
}
probe syscall.sched_getparam.return =
kernel.function("sys_sched_getparam").return {
@@ -893,7 +881,7 @@ probe syscall.sched_get_priority_max =
kernel.function("sys_sched_get_priority_max") {
name = "sched_get_priority_max"
policy = $policy
- argstr = ""
+ argstr = string(policy)
}
probe syscall.sched_get_priority_max.return =
kernel.function("sys_sched_get_priority_max").return {
@@ -909,7 +897,7 @@ probe syscall.sched_get_priority_min =
kernel.function("sys_sched_get_priority_min") {
name = "sched_get_priority_min"
policy = $policy
- argstr = ""
+ argstr = string(policy)
}
probe syscall.sched_get_priority_min.return =
kernel.function("sys_sched_get_priority_min").return {
@@ -924,7 +912,7 @@ probe syscall.sched_get_priority_min.return =
probe syscall.sched_getscheduler = kernel.function("sys_sched_getscheduler") {
name = "sched_getscheduler"
pid = $pid
- argstr = ""
+ argstr = string(pid)
}
probe syscall.sched_getscheduler.return =
kernel.function("sys_sched_getscheduler").return {
@@ -942,7 +930,7 @@ probe syscall.sched_rr_get_interval =
name = "sched_rr_get_interval"
pid = $pid
tp_uaddr = $interval
- argstr = ""
+ argstr = sprintf("%d, %s", pid, _struct_timespec_u(tp_uaddr))
}
probe syscall.sched_rr_get_interval.return =
kernel.function("sys_sched_rr_get_interval").return {
@@ -978,7 +966,10 @@ probe syscall.select = kernel.function("sys_select") {
writefds_uaddr = $outp
exceptfds_uaddr = $exp
timeout_uaddr = $tvp
- argstr = ""
+ argstr = sprintf("%d, %s, %s, %s, %s", n, _fd_set_u(readfds_uaddr),
+ _fd_set_u(writefds_uaddr),
+ _fd_set_u(exceptfds_uaddr),
+ _struct_timeval_u(timeout_uaddr))
}
probe syscall.select.return = kernel.function("sys_select").return {
name = "select"
@@ -1001,7 +992,7 @@ probe syscall.semctl = kernel.function("sys_semctl") {
* unsupported type tag identifier '$arg'
* arg = $arg
*/
- argstr = ""
+ argstr = sprintf("%d, %d, %s", semid, semnum, _semctl_cmd(cmd))
}
probe syscall.semctl.return = kernel.function("sys_semctl").return {
name = "semctl"
@@ -1019,7 +1010,7 @@ probe syscall.semget = kernel.function("sys_semget") {
key = $key
nsems = $nsems
semflg = $semflg
- argstr = ""
+ argstr = sprintf("%d, %d, %s", key, nsems, __sem_flags(semflg))
}
probe syscall.semget.return = kernel.function("sys_semget").return {
name = "semget"
@@ -1037,7 +1028,7 @@ probe syscall.semop = kernel.function("sys_semtimedop") {
semid = $semid
tsops_uaddr = $tsops
nsops = $nsops
- argstr = ""
+ argstr = sprintf("%d, [0x%x], %d", semid, tsops_uaddr, nsops)
}
probe syscall.semop.return = kernel.function("sys_semtimedop").return {
name = "semop"
@@ -1057,7 +1048,8 @@ probe syscall.semtimedop = kernel.function("sys_semtimedop") {
sops_uaddr = $tsops
nsops = $nsops
timeout_uaddr = $timeout
- argstr = ""
+ argstr = sprintf("%d, [0x%x], %d, %s", semid, sops_uaddr, nsops,
+ _struct_timespec_u(timeout_uaddr))
}
probe syscall.semtimedop.return = kernel.function("sys_semtimedop").return {
name = "semtimedop"