Skip to content

Commit

Permalink
tracing: convert irq events to use __print_symbolic
Browse files Browse the repository at this point in the history
The recording of the names at trace time is inefficient. This patch
implements the softirq event recording to only record the vector
and then use the __print_symbolic interface to print out the names.

[ Impact: faster recording of softirq events ]

Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
  • Loading branch information
Steven Rostedt authored and Frederic Weisbecker committed May 26, 2009
1 parent 0f4fc29 commit c2adae0
Showing 1 changed file with 17 additions and 6 deletions.
23 changes: 17 additions & 6 deletions include/trace/events/irq.h
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,19 @@
#undef TRACE_SYSTEM
#define TRACE_SYSTEM irq

#define softirq_name(sirq) { sirq, #sirq }
#define show_softirq_name(val) \
__print_symbolic(val, \
softirq_name(HI_SOFTIRQ), \
softirq_name(TIMER_SOFTIRQ), \
softirq_name(NET_TX_SOFTIRQ), \
softirq_name(NET_RX_SOFTIRQ), \
softirq_name(BLOCK_SOFTIRQ), \
softirq_name(TASKLET_SOFTIRQ), \
softirq_name(SCHED_SOFTIRQ), \
softirq_name(HRTIMER_SOFTIRQ), \
softirq_name(RCU_SOFTIRQ))

/**
* irq_handler_entry - called immediately before the irq action handler
* @irq: irq number
Expand Down Expand Up @@ -87,15 +100,14 @@ TRACE_EVENT(softirq_entry,

TP_STRUCT__entry(
__field( int, vec )
__string( name, softirq_to_name[h-vec] )
),

TP_fast_assign(
__entry->vec = (int)(h - vec);
__assign_str(name, softirq_to_name[h-vec]);
),

TP_printk("softirq=%d action=%s", __entry->vec, __get_str(name))
TP_printk("softirq=%d action=%s", __entry->vec,
show_softirq_name(__entry->vec))
);

/**
Expand All @@ -117,15 +129,14 @@ TRACE_EVENT(softirq_exit,

TP_STRUCT__entry(
__field( int, vec )
__string( name, softirq_to_name[h-vec] )
),

TP_fast_assign(
__entry->vec = (int)(h - vec);
__assign_str(name, softirq_to_name[h-vec]);
),

TP_printk("softirq=%d action=%s", __entry->vec, __get_str(name))
TP_printk("softirq=%d action=%s", __entry->vec,
show_softirq_name(__entry->vec))
);

#endif /* _TRACE_IRQ_H */
Expand Down

0 comments on commit c2adae0

Please sign in to comment.