summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStan Cox <scox@redhat.com>2009-03-20 16:36:25 -0400
committerStan Cox <scox@redhat.com>2009-03-20 16:39:25 -0400
commit5fd5bcfa7af0b19c74ef23c872fa9894990ec641 (patch)
tree38f233b452626ed77dcd5f0c448c0019708a8e65
parent422735b3ec857e812097566e28950aa3313892b4 (diff)
parent9c73606142525f521a44c4907832b2d1e1f3c659 (diff)
downloadsystemtap-steved-5fd5bcfa7af0b19c74ef23c872fa9894990ec641.tar.gz
systemtap-steved-5fd5bcfa7af0b19c74ef23c872fa9894990ec641.tar.xz
systemtap-steved-5fd5bcfa7af0b19c74ef23c872fa9894990ec641.zip
Define static user probe point using asm instead of c.
-rw-r--r--stap.1.in3
-rw-r--r--tapsets.cxx4
-rw-r--r--translate.cxx5
3 files changed, 8 insertions, 4 deletions
diff --git a/stap.1.in b/stap.1.in
index 50c092ee..7efa9239 100644
--- a/stap.1.in
+++ b/stap.1.in
@@ -1056,7 +1056,8 @@ means that the first error will exit the script.
MAXSKIPPED
Maximum number of skipped probes before an exit is triggered, default 100.
Running systemtap with \-t (timing) mode gives more details about skipped
-probes.
+probes. With the default \-DINTERRUPTIBLE=1 setting, probes skipped due to
+reentrancy are not accumulated against this limit.
.TP
MINSTACKSPACE
Minimum number of free kernel stack bytes required in order to
diff --git a/tapsets.cxx b/tapsets.cxx
index a8653d8a..bc567491 100644
--- a/tapsets.cxx
+++ b/tapsets.cxx
@@ -206,7 +206,9 @@ common_probe_entryfn_prologue (translator_output* o, string statestr,
o->newline() << "c = per_cpu_ptr (contexts, smp_processor_id());";
o->newline() << "if (atomic_inc_return (& c->busy) != 1) {";
- o->newline(1) << "atomic_inc (& skipped_count);";
+ o->newline(1) << "#if !INTERRUPTIBLE";
+ o->newline() << "atomic_inc (& skipped_count);";
+ o->newline() << "#endif";
o->newline() << "#ifdef STP_TIMING";
o->newline() << "atomic_inc (& skipped_count_reentrant);";
o->newline() << "#ifdef DEBUG_REENTRANCY";
diff --git a/translate.cxx b/translate.cxx
index 377a11fb..e7c23672 100644
--- a/translate.cxx
+++ b/translate.cxx
@@ -1360,9 +1360,10 @@ c_unparser::emit_module_exit ()
o->newline() << "#endif";
}
- // print final error/reentrancy counts if non-zero
+ // print final error/skipped counts if non-zero
o->newline() << "if (atomic_read (& skipped_count) || "
- << "atomic_read (& error_count)) {";
+ << "atomic_read (& error_count) || "
+ << "atomic_read (& skipped_count_reentrant)) {"; // PR9967
o->newline(1) << "_stp_warn (\"Number of errors: %d, "
<< "skipped probes: %d\\n\", "
<< "(int) atomic_read (& error_count), "