diff options
Diffstat (limited to 'tapset')
-rw-r--r-- | tapset/ChangeLog | 18 | ||||
-rw-r--r-- | tapset/logging.stp | 9 | ||||
-rw-r--r-- | tapset/signal.stp | 16 | ||||
-rw-r--r-- | tapset/syscalls2.stp | 2 |
4 files changed, 35 insertions, 10 deletions
diff --git a/tapset/ChangeLog b/tapset/ChangeLog index ecab4aea..d5b32bf1 100644 --- a/tapset/ChangeLog +++ b/tapset/ChangeLog @@ -1,3 +1,21 @@ +2007-11-14 Zhaolei <zhaolei@cn.fujitsu.com> + + From Lai Jiangshan <laijs@cn.fujitsu.com> + * signal.stp (signal.do_action): Call __get_action_mask to get mask + to fix semantic error of accessing a struct. + * signal.stp (__get_action_mask): Add. + +2007-11-12 Martin Hunt <hunt@redhat.com> + + * logging.stp (print_char): Remove. Now implemented by + stap. + (log): Add a comment that it is deprecated. + +2007-11-12 Martin Hunt <hunt@redhat.com> + + * syscalls2.stp (sys_remap_file_pages: : Change kernel + version check to >= 2.6.24. + 2007-11-8 Zhaolei <zhaolei@cn.fujitsu.com> From Lai Jiangshan <laijs@cn.fujitsu.com> diff --git a/tapset/logging.stp b/tapset/logging.stp index 968435e2..d2cca612 100644 --- a/tapset/logging.stp +++ b/tapset/logging.stp @@ -1,5 +1,5 @@ // logging tapset -// Copyright (C) 2005, 2006 Red Hat Inc. +// Copyright (C) 2005, 2006, 2007 Red Hat Inc. // // This file is part of systemtap, and is free software. You can // redistribute it and/or modify it under the terms of the GNU General @@ -7,6 +7,7 @@ // later version. // send a string out with a newline +// Deprecated. print* functions are much more efficient. function log (msg:string) %{ _stp_printf ("%s\n", THIS->msg); %} @@ -35,9 +36,3 @@ function error (msg:string) %{ function stp_print_binary(n:long, arg1:long, arg2:long, arg3:long, arg4:long) %{ _stp_print_binary (THIS->n, THIS->arg1, THIS->arg2, THIS->arg3, THIS->arg4); %} - -function print_char(c:long) %{ -{ - _stp_print_char((char)THIS->c); -} -%} diff --git a/tapset/signal.stp b/tapset/signal.stp index 1c8152b6..d969ffc8 100644 --- a/tapset/signal.stp +++ b/tapset/signal.stp @@ -427,8 +427,8 @@ probe signal.do_action = kernel.function("do_sigaction") oldsigact_addr = $oact if(sigact_addr != 0) { - sa_handler = $act->sa->sa_handler - sa_mask = $act->sa->sa_mask + sa_handler = $act->sa->sa_handler + sa_mask = __get_action_mask($act) } } @@ -437,6 +437,18 @@ probe signal.do_action.return = kernel.function("do_sigaction").return retstr = returnstr(1) } +function __get_action_mask:long(act:long) %{ /* pure */ + int i; + struct k_sigaction *act = (struct k_sigaction *)((long)THIS->act); + sigset_t *sigset = &act->sa.sa_mask; + THIS->__retvalue = kread(&(sigset->sig[0])); + for (i=1; i<_NSIG_WORDS; ++i) { + uint64_t part = kread(&(sigset->sig[i])); + THIS->__retvalue |= part << (_NSIG_BPW*i); + } + CATCH_DEREF_FAULT(); +%} + /* probe signal.procmask * diff --git a/tapset/syscalls2.stp b/tapset/syscalls2.stp index aa22377c..9c84f23d 100644 --- a/tapset/syscalls2.stp +++ b/tapset/syscalls2.stp @@ -784,7 +784,7 @@ probe syscall.remap_file_pages = kernel.function("sys_remap_file_pages") ? { name = "remap_file_pages" start = $start size = $size -%( kernel_vr > "2.6.23" %? +%( kernel_vr >= "2.6.24" %? prot = $prot %: prot = $__prot |