]> sourceware.org Git - systemtap.git/commitdiff
2007-11-14 Zhaolei <zhaolei@cn.fujitsu.com>
authorzhaolei <zhaolei>
Wed, 14 Nov 2007 06:19:28 +0000 (06:19 +0000)
committerzhaolei <zhaolei>
Wed, 14 Nov 2007 06:19:28 +0000 (06:19 +0000)
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.

tapset/ChangeLog
tapset/signal.stp

index be880588ac743ba009342b3de7ff0ad9b8ac9c3b..d5b32bf1ea3ed75f5f661be9a9fa07077adccdee 100644 (file)
@@ -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 
index 1c8152b6c486201ae750219fa704b993f2f2b055..d969ffc8b707233082c6f099025af75acd6dd0d4 100644 (file)
@@ -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
  *
This page took 0.031181 seconds and 5 git commands to generate.