summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorfche <fche>2005-09-19 20:15:33 +0000
committerfche <fche>2005-09-19 20:15:33 +0000
commitacc5b5e672eceab0172b43dc7dfb1e2e9d4d6e39 (patch)
tree7e5b4a6c460791ef79b65d3d8733659bdb7ae8fa
parent2340b07688d4c8bde3c26711e850e9486ee3b002 (diff)
downloadsystemtap-steved-acc5b5e672eceab0172b43dc7dfb1e2e9d4d6e39.tar.gz
systemtap-steved-acc5b5e672eceab0172b43dc7dfb1e2e9d4d6e39.tar.xz
systemtap-steved-acc5b5e672eceab0172b43dc7dfb1e2e9d4d6e39.zip
2005-09-19 Frank Ch. Eigler <fche@redhat.com>
* tapsets.cxx (*::emit_probe_entries): Handle busy-count correctly upon contention.
-rw-r--r--ChangeLog5
-rw-r--r--tapsets.cxx3
2 files changed, 8 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 4317c8ad..107d0f32 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2005-09-19 Frank Ch. Eigler <fche@redhat.com>
+
+ * tapsets.cxx (*::emit_probe_entries): Handle busy-count correctly
+ upon contention.
+
2005-09-14 Graydon Hoare <graydon@redhat.com>
PR 1260
diff --git a/tapsets.cxx b/tapsets.cxx
index 8d08ea5e..d250521c 100644
--- a/tapsets.cxx
+++ b/tapsets.cxx
@@ -161,6 +161,7 @@ be_derived_probe::emit_probe_entries (translator_output* o, unsigned j)
o->newline(1) << "printk (KERN_ERR \"probe reentrancy (%s vs %s)\\n\", "
<< "c->probe_point, probe_point);";
o->newline() << "atomic_set (& session_state, STAP_SESSION_ERROR);";
+ o->newline() << "atomic_dec (&c->busy);";
o->newline() << "return;";
o->newline(-1) << "}";
o->newline();
@@ -2151,6 +2152,7 @@ dwarf_derived_probe::emit_probe_entries (translator_output* o, unsigned probenum
o->newline(1) << "printk (KERN_ERR \"probe reentrancy (%s vs %s)\\n\", "
<< "c->probe_point, probe_point);";
o->newline() << "atomic_set (& session_state, STAP_SESSION_ERROR);";
+ o->newline() << "atomic_dec (&c->busy);";
o->newline() << "return 0;";
o->newline(-1) << "}";
o->newline();
@@ -2312,6 +2314,7 @@ timer_derived_probe::emit_probe_entries (translator_output* o, unsigned j)
o->newline(1) << "printk (KERN_ERR \"probe reentrancy (%s vs %s)\\n\", "
<< "c->probe_point, probe_point);";
o->newline() << "atomic_set (& session_state, STAP_SESSION_ERROR);";
+ o->newline() << "atomic_dec (&c->busy);";
o->newline() << "return;";
o->newline(-1) << "}";
o->newline();