diff options
author | zhaolei <zhaolei> | 2007-11-14 06:19:28 +0000 |
---|---|---|
committer | zhaolei <zhaolei> | 2007-11-14 06:19:28 +0000 |
commit | 52e6821c09a19dbc57cb40a9ed18f59405f9b75b (patch) | |
tree | 21efc391c60b22e81e123b65466b7d62a23b1b2b | |
parent | 1a19dbf062e2482f60998b2a4758daad24290c53 (diff) | |
download | systemtap-steved-52e6821c09a19dbc57cb40a9ed18f59405f9b75b.tar.gz systemtap-steved-52e6821c09a19dbc57cb40a9ed18f59405f9b75b.tar.xz systemtap-steved-52e6821c09a19dbc57cb40a9ed18f59405f9b75b.zip |
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.
-rw-r--r-- | tapset/ChangeLog | 7 | ||||
-rw-r--r-- | tapset/signal.stp | 16 |
2 files changed, 21 insertions, 2 deletions
diff --git a/tapset/ChangeLog b/tapset/ChangeLog index be880588..d5b32bf1 100644 --- a/tapset/ChangeLog +++ b/tapset/ChangeLog @@ -1,3 +1,10 @@ +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 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 * |