{ /* Pixel, R, G, B */
{ 0, 0x0000, 0x0000, 0x0000 }, /* COL_SOFT_IRQ_UNKNOWN */
{ 0, 0x0000, 0x0000, 0x0000 }, /* COL_SOFT_IRQ_IDLE */
+ { 0, 0xFFFF, 0xD400, 0xD400 }, /* COL_SOFT_IRQ_PENDING */
{ 0, 0xFFFF, 0x9400, 0x9600 }, /* COL_SOFT_IRQ_BUSY */
};
events_request,
&hooks);
+ lttv_trace_find_hook(ts->parent.t,
+ LTT_FACILITY_KERNEL,
+ LTT_EVENT_SOFT_IRQ_RAISE,
+ FIELD_ARRAY(LTT_FIELD_SOFT_IRQ_ID),
+ before_execmode_hook,
+ events_request,
+ &hooks);
+
lttv_trace_find_hook(ts->parent.t,
LTT_FACILITY_KERNEL,
LTT_EVENT_SOFT_IRQ_ENTRY,
static void soft_irq_set_line_color(PropertiesLine *prop_line, LttvSoftIRQState *s)
{
GQuark present_state;
- if(s->running == 0)
- prop_line->color = drawing_colors_soft_irq[COL_SOFT_IRQ_IDLE];
- else
+ if(s->running)
prop_line->color = drawing_colors_soft_irq[COL_SOFT_IRQ_BUSY];
+ else if(s->pending)
+ prop_line->color = drawing_colors_soft_irq[COL_SOFT_IRQ_PENDING];
+ else
+ prop_line->color = drawing_colors_soft_irq[COL_SOFT_IRQ_IDLE];
}
static void trap_set_line_color(PropertiesLine *prop_line, LttvTrapState *s)
guint64 softirq;
guint cpu = tfs->cpu;
+ guint16 ev_id_raise = marker_get_id_from_info(trace, marker_get_info_from_name(trace, lttv_merge_facility_event_name(LTT_FACILITY_KERNEL, LTT_EVENT_SOFT_IRQ_RAISE)));
guint16 ev_id_entry = marker_get_id_from_info(trace, marker_get_info_from_name(trace, lttv_merge_facility_event_name(LTT_FACILITY_KERNEL, LTT_EVENT_SOFT_IRQ_ENTRY)));
guint16 ev_id_exit = marker_get_id_from_info(trace, marker_get_info_from_name(trace, lttv_merge_facility_event_name(LTT_FACILITY_KERNEL, LTT_EVENT_SOFT_IRQ_EXIT)));
- if(ev_id_entry == e->event_id) {
+ if(ev_id_entry == e->event_id || ev_id_raise == e->event_id) {
softirq = ltt_event_get_long_unsigned(e, lttv_trace_get_hook_field(th, 0));
}
else if(ev_id_exit == e->event_id) {