]> sourceware.org Git - systemtap.git/commitdiff
Fixed PR11955 by updating the signal tapset.
authorDavid Smith <dsmith@redhat.com>
Fri, 1 Feb 2013 17:01:40 +0000 (11:01 -0600)
committerDavid Smith <dsmith@redhat.com>
Fri, 1 Feb 2013 17:01:40 +0000 (11:01 -0600)
* tapset/linux/signal.stp (signal.send): Now uses the 'signal_generate'
  tracepoint where available. Deprecated the 'send2queue' variable.
  (signal.send.return): Deprecated.
  (signal.handle): Now uses the 'signal_deliver' tracepoint where
  available. Deprecated the 'oldset_addr' and 'regs' variables.
  (signal.handle.return): Deprecated.
* testsuite/buildok/signal-detailed.stp: Updated with 'signal.send',
  'signal.send.return', and 'signal.handle.return' deprecations.
* NEWS: Added deprecation notes.

NEWS
tapset/linux/signal.stp
testsuite/buildok/signal-detailed.stp

diff --git a/NEWS b/NEWS
index febf7e1042ab16eaa8a596ef94ead5b360e00140..34af39154d3209c44c77c0664eafc76f29e884fc 100644 (file)
--- a/NEWS
+++ b/NEWS
   functionality has been based on. For more info on re2c, see:
      http://sourceforge.net/projects/re2c/
 
+- The folowing tapset variables are deprecated in release 2.1 and will
+  be removed in release 2.2:
+  - The 'send2queue' variable in the 'signal.send' probe.
+  - The 'oldset_addr' and 'regs' variables in the 'signal.handle' probe.
+
+- The following tapset probes are deprecated in release 2.1 and will
+  be removed in release 2.2:
+  - signal.send.return
+  - signal.handle.return
+
 * What's new in version 2.0, 2012-10-09
 
 - Systemtap includes a new prototype backend, which uses Dyninst to instrument
index 67c4d5ae9d5eda207c39eb4ef96711a62f4b7bac..c5eb71cd2e66a8e3ebe78ad815b386def0b1ab43 100644 (file)
  * @sinfo: The address of siginfo struct
  * @shared: Indicates whether the signal is shared by the thread group
  * @send2queue: Indicates whether the signal is sent to an existing
- * sigqueue
+ * sigqueue (deprecated in SystemTap 2.1)
  * @name: The name of the function used to send out the signal
  *
  * Context:
  *  The signal's sender.
  *
  */
-probe signal.send = __signal.send.send_sigqueue,
+probe signal.send = __signal.send.signal_generate !,
+                   __signal.send.send_sigqueue,
 %( kernel_v > "2.6.25" %?
                    __signal.send.send_signal ?
 %:
@@ -57,6 +58,18 @@ probe signal.send = __signal.send.send_sigqueue,
         si_code="SI_USER or SI_TIMER or SI_ASYNCIO"
 }
 
+probe __signal.send.signal_generate = kernel.trace("signal_generate") ?
+{
+    name = "signal_generate"
+    sig = $sig
+    task = $task
+    sinfo = $info
+    shared = (@choose_defined($group, 0) == 0) ? 0 : 1
+%( systemtap_v <= "2.1" %?
+    send2queue = 0
+%)
+}
+
 probe __signal.send.send_sigqueue = kernel.function("send_sigqueue")
 {
     name = "send_sigqueue"
@@ -64,7 +77,9 @@ probe __signal.send.send_sigqueue = kernel.function("send_sigqueue")
     sig = @choose_defined($q->info->si_signo, $sig)
     sinfo = @choose_defined($q->info, 0)
     shared = 0
+%( systemtap_v <= "2.1" %?
     send2queue = 1
+%)
 }
 
 probe __signal.send.send_signal =
@@ -82,7 +97,9 @@ probe __signal.send.send_signal =
     sig = $sig
     task = $t
     sinfo = $info
+%( systemtap_v <= "2.1" %?
     send2queue = 0
+%)
 }
 
 probe __signal.send.group_send_sig_info =
@@ -93,7 +110,9 @@ probe __signal.send.group_send_sig_info =
     task = $p
     sinfo = $info
     shared = 1
+%( systemtap_v <= "2.1" %?
     send2queue = 0
+%)
 }
 
 probe __signal.send.send_group_sigqueue =
@@ -104,7 +123,9 @@ probe __signal.send.send_group_sigqueue =
     task = $p
     sinfo = 0 # $q->info
     shared = 1
+%( systemtap_v <= "2.1" %?
     send2queue = 1
+%)
 }
 
 probe __signal.send.specific_send_sig_info =
@@ -115,11 +136,15 @@ probe __signal.send.specific_send_sig_info =
     task = $t
     sinfo = $info
     shared = 0
+%( systemtap_v <= "2.1" %?
     send2queue = 0
+%)
 }
 
+%( systemtap_v <= "2.1" %?
 /**
  * probe signal.send.return - Signal being sent to a process completed
+ * (deprecated in SystemTap 2.1)
  * @retstr: The return value to either __group_send_sig_info,
  * specific_send_sig_info,
  * or send_sigqueue
@@ -243,6 +268,7 @@ probe __signal.send.send_group_siggueue.return =
     shared = 1
     send2queue = 1
 }
+%)
 
 /**
  * probe signal.checkperm - Check being performed on a sent signal
@@ -608,15 +634,40 @@ probe signal.pending.return = kernel.function("do_sigpending").return
  * @ka_addr: The address of the k_sigaction table
  * associated with the signal
  * @oldset_addr: The address of the bitmask array of blocked signals
- * @regs: The address of the kernel-mode stack area
+ * (deprecated in SystemTap 2.1)
+ * @regs: The address of the kernel-mode stack area (deprecated in
+ * SystemTap 2.1)
  * @sig_mode: Indicates whether the signal was a user-mode or kernel-mode signal
  */
-probe signal.handle = kernel.function("handle_rt_signal64") ?,
-                     kernel.function("handle_rt_signal32") ?,
-                     kernel.function("handle_signal32") !,
-                     kernel.function("handle_signal")
+probe signal.handle = __signal.handle.tp !, __signal.handle.kp
 {
     name = "handle"
+    // Check whether the signal is a User Mode or Kernel mode Signal.
+
+    if (sinfo == 0 && sig_code <= 0)
+        sig_mode = "User Mode Signal"
+    else if (sinfo >=  1)
+        sig_mode = "Kernel Mode Signal"
+}
+
+probe __signal.handle.tp = kernel.trace("signal_deliver") ?
+{
+    sig = $sig
+    sig_name = _signal_name($sig)
+    sinfo = $info
+    sig_code = $info->si_code
+    ka_addr = $ka
+%( systemtap_v <= "2.1" %?
+    oldset_addr = 0
+    regs = 0
+%)
+}
+
+probe __signal.handle.kp = kernel.function("handle_rt_signal64") ?,
+                          kernel.function("handle_rt_signal32") ?,
+                          kernel.function("handle_signal32") !,
+                          kernel.function("handle_signal")
+{
     if (@defined($sig)) {
         sig = $sig
         sig_name = _signal_name($sig)
@@ -628,19 +679,16 @@ probe signal.handle = kernel.function("handle_rt_signal64") ?,
     sinfo = $info
     sig_code = $info->si_code
     ka_addr = $ka
-    oldset_addr = @choose_defined($oldset, $set)
+%( systemtap_v <= "2.1" %?
+    oldset_addr = @choose_defined($oldset, @choose_defined($set, 0))
     regs = $regs
-
-    // Check whether the signal is a User Mode or Kernel mode Signal.
-
-    if (sinfo == 0 && sig_code <= 0)
-        sig_mode = "User Mode Signal"
-    else if (sinfo >=  1)
-        sig_mode = "Kernel Mode Signal"
+%)
 }
 
+%( systemtap_v <= "2.1" %?
 /**
  * probe signal.handle.return - Signal handler invocation completed
+ * (deprecated in SystemTap 2.1)
  * @name: Name of the probe point
  * @retstr: Return value as a string
  */
@@ -652,6 +700,7 @@ probe signal.handle.return = kernel.function("handle_rt_signal64").return ?,
     name = "handle"
     retstr = return_str(1, $return)
 }
+%)
 
 
 /**
index 9cc581eb6a354b54cb05d1d51540a3a052050baa..5a6b34da8ca1617a824d0f4bdba365b2ea668e24 100755 (executable)
@@ -3,13 +3,18 @@
 probe signal.send
 {
        printf("%s(%d(%s), %d(%s))\n", name, sig, sig_name, sig_pid, pid_name)
-       printf("%s %p %p %d %d\n", si_code, task, sinfo, shared, send2queue)
+       printf("%s %p %p %d\n", si_code, task, sinfo, shared)
+%( systemtap_v <= "2.1" %?
+       printf("%d\n", send2queue)
+%)
 }
+%( systemtap_v <= "2.1" %?
 probe signal.send.return
 {
        printf("%s() = %s\n", name, retstr)
        printf("%d %d\n", shared, send2queue)
 }
+%)
 
 probe signal.checkperm
 {
@@ -92,10 +97,12 @@ probe signal.pending.return
 
 # signal.handle test moved to signal-handle.stp
 
+%( systemtap_v <= "2.1" %?
 probe signal.handle.return ?
 {
        printf("%s() = %s\n", name, retstr)
 }
+%)
 
 probe signal.do_action
 {
This page took 0.040286 seconds and 5 git commands to generate.