diff options
author | hien <hien> | 2006-02-16 00:39:58 +0000 |
---|---|---|
committer | hien <hien> | 2006-02-16 00:39:58 +0000 |
commit | 0359d745170dc9878bd7302a2757fb4752f084b2 (patch) | |
tree | fa0381ccf13ea5740986c9321d1658752af6a935 | |
parent | d487127ca05f400b1c4d244dde5f537118177a6c (diff) | |
download | systemtap-steved-0359d745170dc9878bd7302a2757fb4752f084b2.tar.gz systemtap-steved-0359d745170dc9878bd7302a2757fb4752f084b2.tar.xz systemtap-steved-0359d745170dc9878bd7302a2757fb4752f084b2.zip |
Some progress but still more works.
-rw-r--r-- | tapset/syscalls2.stp | 74 |
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" |