diff options
author | fche <fche> | 2006-02-22 15:05:50 +0000 |
---|---|---|
committer | fche <fche> | 2006-02-22 15:05:50 +0000 |
commit | 03d569d3e8ee6f405b8e8489eaaf325c774b822d (patch) | |
tree | 91dea097c656f0208c3bc481cc57a2cd97092880 | |
parent | 7934b76a4ce7cdcdd9de054db154e3da9dab7047 (diff) | |
download | systemtap-steved-03d569d3e8ee6f405b8e8489eaaf325c774b822d.tar.gz systemtap-steved-03d569d3e8ee6f405b8e8489eaaf325c774b822d.tar.xz systemtap-steved-03d569d3e8ee6f405b8e8489eaaf325c774b822d.zip |
2006-02-22 Frank Ch. Eigler <fche@elastic.org>
PR 2293.
* tapsets.cxx (emit_probe_epilogue): Emit early local_irq_save().
(emit_probe_epilogue): ... and matching _restore().
* main.cxx (main): Emit a "hello, I'm starting" message
before pass 5 in verbose mode.
-rw-r--r-- | ChangeLog | 9 | ||||
-rw-r--r-- | main.cxx | 4 | ||||
-rw-r--r-- | tapsets.cxx | 8 |
3 files changed, 18 insertions, 3 deletions
@@ -1,3 +1,12 @@ +2006-02-22 Frank Ch. Eigler <fche@elastic.org> + + PR 2293. + * tapsets.cxx (emit_probe_epilogue): Emit early local_irq_save(). + (emit_probe_epilogue): ... and matching _restore(). + + * main.cxx (main): Emit a "hello, I'm starting" message + before pass 5 in verbose mode. + 2006-02-17 Frank Ch. Eigler <fche@elastic.org> * stapfuncs.5.in (cpu): Document contextinfo function. @@ -545,6 +545,10 @@ main (int argc, char * const argv []) // PASS 5: RUN times (& tms_before); gettimeofday (&tv_before, NULL); + // NB: this message is a judgement call. The other passes don't emit + // a "hello, I'm starting" message, but then the others aren't interactive + // and don't take an indefinite amount of time. + if (s.verbose) clog << "Pass 5: starting run." << endl; rc = run_pass (s); times (& tms_after); gettimeofday (&tv_after, NULL); diff --git a/tapsets.cxx b/tapsets.cxx index 5919d241..31b2515a 100644 --- a/tapsets.cxx +++ b/tapsets.cxx @@ -91,8 +91,10 @@ void derived_probe::emit_probe_prologue (translator_output* o, const std::string& statereq) { - o->newline() << "struct context* c = per_cpu_ptr " - << "(contexts, smp_processor_id());"; + o->newline() << "struct context* c;"; + o->newline() << "unsigned long flags;"; + o->newline() << "local_irq_save (flags);"; + o->newline() << "c = per_cpu_ptr (contexts, smp_processor_id());"; o->newline() << "if (atomic_read (&session_state) != " << statereq << ")"; o->newline(1) << "goto probe_epilogue;"; @@ -136,7 +138,7 @@ derived_probe::emit_probe_epilogue (translator_output* o) o->newline() << "atomic_dec (&c->busy);"; o->newline(-1) << "probe_epilogue: ;"; - o->indent(1); + o->newline(1) << "local_irq_restore (flags);"; } |