Messages in this thread Patch in this message |  | | | Date | Fri, 20 Jun 2008 13:03:02 -0400 | | From | Masami Hiramatsu <> | | Subject | [RFC][Patch 2/2] markers: example of irq regular kernel markers |
| |
Add trace points of irq handle events ported from LTTng's markers.
Signed-off-by: Masami Hiramatsu <mhiramat@redhat.com> --- I just rewrote LTTng's irq event by using DEFINE_TRACE for example. include/linux/irq_trace.h | 6 ++++++ kernel/irq/handle.c | 6 ++++++ 2 files changed, 12 insertions(+) Index: 2.6.26-rc5-mm3/include/linux/irq_trace.h =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ 2.6.26-rc5-mm3/include/linux/irq_trace.h 2008-06-16 12:27:51.000000000 -0400 @@ -0,0 +1,6 @@ +#include <linux/marker.h> + +DEFINE_TRACE(irq_entry, (int irq_id, int kernel_mode), irq_id, kernel_mode); + +DEFINE_TRACE(irq_exit, (void)); + Index: 2.6.26-rc5-mm3/kernel/irq/handle.c =================================================================== --- 2.6.26-rc5-mm3.orig/kernel/irq/handle.c 2008-06-16 12:27:50.000000000 -0400 +++ 2.6.26-rc5-mm3/kernel/irq/handle.c 2008-06-16 12:27:51.000000000 -0400 @@ -15,6 +15,7 @@ #include <linux/random.h> #include <linux/interrupt.h> #include <linux/kernel_stat.h> +#include <linux/irq_trace.h>
#include "internals.h"
@@ -130,6 +131,9 @@ irqreturn_t handle_IRQ_event(unsigned in { irqreturn_t ret, retval = IRQ_NONE; unsigned int status = 0; + struct pt_regs *regs = get_irq_regs(); + + trace_irq_entry(irq, (regs)?(!user_mode(regs)):(1));
handle_dynamic_tick(action);
@@ -148,6 +152,8 @@ irqreturn_t handle_IRQ_event(unsigned in add_interrupt_randomness(irq); local_irq_disable();
+ trace_irq_exit(); + return retval; }
-- Masami Hiramatsu Software Engineer Hitachi Computer Products (America) Inc. Software Solutions Division
e-mail: mhiramat@redhat.com
|  |