X-Git-Url: http://git.liburcu.org/?a=blobdiff_plain;f=ltt%2Fbranches%2Fpoly%2Flttv%2Flttv%2Fstate.c;h=61677fa8f4b8a57d0d1ffe41a76485224656f19f;hb=d34141ca6fc6dd872a922134b22095bd74ec013d;hp=5bdfcebf40f3faa1f748d2bf9b62c1d6856b8c56;hpb=9c731a505cf0d0ded02f8e90a823fa90084c7740;p=lttv.git diff --git a/ltt/branches/poly/lttv/lttv/state.c b/ltt/branches/poly/lttv/lttv/state.c index 5bdfcebf..61677fa8 100644 --- a/ltt/branches/poly/lttv/lttv/state.c +++ b/ltt/branches/poly/lttv/lttv/state.c @@ -142,6 +142,7 @@ LttvCPUMode LTTV_CPU_IDLE, LTTV_CPU_BUSY, LTTV_CPU_IRQ, + LTTV_CPU_SOFT_IRQ, LTTV_CPU_TRAP; LttvIRQMode @@ -2356,6 +2357,9 @@ static gboolean soft_irq_exit(void *hook_data, void *call_data) if(ts->soft_irq_states[softirq].running) ts->soft_irq_states[softirq].running--; + /* update cpu status */ + cpu_pop_mode(s->cpu_state); + return FALSE; } @@ -2401,6 +2405,9 @@ static gboolean soft_irq_entry(void *hook_data, void *call_data) /* Do something with the info about being in user or system mode when int? */ push_state(s, LTTV_STATE_SOFT_IRQ, submode); + /* update cpu status */ + cpu_push_mode(s->cpu_state, LTTV_CPU_SOFT_IRQ); + /* update softirq status */ s->cpu_state->last_soft_irq = softirq; ts->soft_irq_states[softirq].running++; @@ -3986,6 +3993,7 @@ static void module_init() LTTV_CPU_IDLE = g_quark_from_string("idle"); LTTV_CPU_BUSY = g_quark_from_string("busy"); LTTV_CPU_IRQ = g_quark_from_string("irq"); + LTTV_CPU_SOFT_IRQ = g_quark_from_string("softirq"); LTTV_CPU_TRAP = g_quark_from_string("trap"); LTTV_IRQ_UNKNOWN = g_quark_from_string("unknown");