diff options
Diffstat (limited to 'tapset')
-rw-r--r-- | tapset/ChangeLog | 33 | ||||
-rw-r--r-- | tapset/aux_syscalls.stp | 28 | ||||
-rw-r--r-- | tapset/queue_stats.stp | 1 | ||||
-rw-r--r-- | tapset/rpc.stp | 4 | ||||
-rw-r--r-- | tapset/syscalls2.stp | 2 |
5 files changed, 62 insertions, 6 deletions
diff --git a/tapset/ChangeLog b/tapset/ChangeLog index b325a627..287b0823 100644 --- a/tapset/ChangeLog +++ b/tapset/ChangeLog @@ -1,3 +1,36 @@ +2007-10-10 Martin Hunt <hunt@redhat.com> + + * aux_syscalls.stp (_stp_lookup_str): When defaulting + to a numeric value, append, don't overwrite. + +2007-10-10 Zhaolei <zhaolei@cn.fujitsu.com> + + From Lai Jiangshan <laijs@cn.fujitsu.com> + * aux_syscalls.stp (_stp_lookup_or_str) redirect to _stp_lookup_str + if val is 0. + +2007-10-09 Mike Mason <mmlnx@us.ibm.com> + + * rpc.stp: Replaced atomic_read()'s with kread()'s + +2007-10-09 Martin Hunt <hunt@redhat.com> + PR5153 + * aux_syscalls.stp (_sighandler_str): No + sa_restorer field for IA64. + +2007-10-09 Martin Hunt <hunt@redhat.com> + + * syscalls2.stp (sys_signal): Call + _sighandler_str(). + + * aux_syscalls.stp (_stp_sigset_str): Don't + include SIG_0. + (_sighandler_str): New. + +2007-10-09 Zhaolei <zhaolei@cn.fujitsu.com> + + * queue_stats.stp (qsq_start): Add destruction for qs_utime. + 2007-10-09 Zhaolei <zhaolei@cn.fujitsu.com> From Cai Fei <caifei@cn.fujitsu.com> diff --git a/tapset/aux_syscalls.stp b/tapset/aux_syscalls.stp index 3818ae75..05c7dc98 100644 --- a/tapset/aux_syscalls.stp +++ b/tapset/aux_syscalls.stp @@ -1520,7 +1520,7 @@ typedef struct { void _stp_lookup_str(const _stp_val_array * const array, long val, char *ptr, int len) { - int i = 0; + int i = 0, slen; while (array[i].name) { if (array[i].val == val) { strlcat (ptr, array[i].name, len); @@ -1528,11 +1528,18 @@ void _stp_lookup_str(const _stp_val_array * const array, long val, char *ptr, in } i++; } - snprintf(ptr, len, "0x%lx", val); + slen = strlen(ptr); + _stp_snprintf(ptr + slen, len - slen, "0x%lx", val); } void _stp_lookup_or_str(const _stp_val_array * const array, long val, char *ptr, int len) { int i = 0, flag = 0; + + if (val == 0) { + _stp_lookup_str(array, val, ptr, len); + return; + } + while (array[i].name) { if (array[i].val & val) { if (flag) @@ -1587,7 +1594,7 @@ void _stp_sigset_str(sigset_t *mask, char *ptr, int len) const _stp_val_array * const array = _stp_signal_list; int i = 0, flag = 0; while (array[i].name) { - if (sigismember(mask, array[i].val)) { + if (array[i].val && sigismember(mask, array[i].val)) { if (flag) strlcat(ptr, "|", len); strlcat(ptr, array[i].name, len); @@ -1785,6 +1792,17 @@ function get_mmap_args:string (args:long) strlcpy (THIS->__retvalue, "UNKNOWN", MAXSTRINGLEN); %} + +function _sighandler_str:string(uaddr:long) +%{ /* pure */ + static const _stp_val_array const _stp_sa_handler_list[] = { + {0, "SIG_DFL"}, + {1, "SIG_IGN"}, + {0, NULL} + }; + _stp_lookup_str(_stp_sa_handler_list, (long)THIS->uaddr, THIS->__retvalue, MAXSTRINGLEN); +%} + function _struct_sigaction_u:string(uaddr:long) %{ /* pure */ static const _stp_val_array const _stp_sa_handler_list[] = { @@ -1818,8 +1836,12 @@ function _struct_sigaction_u:string(uaddr:long) strlcat (THIS->__retvalue, ", ", MAXSTRINGLEN); _stp_lookup_or_str(_stp_sa_flags_list, act.sa_flags, THIS->__retvalue, MAXSTRINGLEN); strlcat (THIS->__retvalue, ", ", MAXSTRINGLEN); +#if !defined (__ia64__) len = strlen(THIS->__retvalue); _stp_snprintf(THIS->__retvalue + len, MAXSTRINGLEN - len, "0x%lx, [", (long)act.sa_restorer); +#else + strlcat (THIS->__retvalue, "[", MAXSTRINGLEN); +#endif _stp_sigset_str(&act.sa_mask, THIS->__retvalue, MAXSTRINGLEN); strlcat (THIS->__retvalue, "]", MAXSTRINGLEN); } diff --git a/tapset/queue_stats.stp b/tapset/queue_stats.stp index 75407fee..9d89903c 100644 --- a/tapset/queue_stats.stp +++ b/tapset/queue_stats.stp @@ -59,6 +59,7 @@ function qsq_start (qname) { # reset statistics for new baseline delete qs_wtime[qname] delete qs_wlentime[qname] delete qs_dcount[qname] + delete qs_utime[qname] qs_stime[qname] = qs_time () } diff --git a/tapset/rpc.stp b/tapset/rpc.stp index 3d17d221..eecdb796 100644 --- a/tapset/rpc.stp +++ b/tapset/rpc.stp @@ -948,7 +948,7 @@ function clones_from_clnt:long(clnt:long) %{ /* pure */ struct rpc_clnt *clnt = (struct rpc_clnt *)(long)THIS->clnt; #if LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,22) - THIS->__retvalue = atomic_read(&clnt->cl_count); /* FIXME: deref hazard! */ + THIS->__retvalue = kread(&(clnt->cl_count)); #else THIS->__retvalue = -1; #endif @@ -958,7 +958,7 @@ function tasks_from_clnt:long(clnt:long) %{ /* pure */ struct rpc_clnt *clnt = (struct rpc_clnt *)(long)THIS->clnt; #if LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,22) - THIS->__retvalue = atomic_read(&clnt->cl_users); /* FIXME: deref hazard! */ + THIS->__retvalue = kread(&(clnt->cl_users)); #else THIS->__retvalue = -1; #endif diff --git a/tapset/syscalls2.stp b/tapset/syscalls2.stp index acb2c137..e702bbcd 100644 --- a/tapset/syscalls2.stp +++ b/tapset/syscalls2.stp @@ -2122,7 +2122,7 @@ probe syscall.signal = kernel.function("sys_signal") ? { name = "signal" sig = $sig handler = $handler - argstr = sprintf("%s, %p", _signal_name($sig), $handler) + argstr = sprintf("%s, %s", _signal_name($sig), _sighandler_str($handler)) } probe syscall.signal.return = kernel.function("sys_signal").return ? { name = "signal" |