X-Git-Url: http://git.liburcu.org/?a=blobdiff_plain;f=lttv%2Flttv%2Fstate.c;h=938f23e4cd911ae52fc4f87d13f06f63d457a384;hb=6b1f0e27f35150ee49c5d18fa5e5a0e298d24369;hp=871df9bc95ae571768912fae4094c8f76cc95d2f;hpb=90e19f82bca635a1ba52b8a50b64e484bd19c14f;p=lttv.git diff --git a/lttv/lttv/state.c b/lttv/lttv/state.c index 871df9bc..938f23e4 100644 --- a/lttv/lttv/state.c +++ b/lttv/lttv/state.c @@ -227,7 +227,7 @@ static void lttv_trace_states_read_raw(LttvTraceState *tcs, FILE *fp, GPtrArray *quarktable); /* Resource function prototypes */ -static LttvBdevState *get_hashed_bdevstate(LttvTraceState *ts, guint16 devcode); +static LttvBdevState *get_hashed_bdevstate(LttvTraceState *ts, guint32 devcode); static LttvBdevState *bdevstate_new(void); static void bdevstate_free(LttvBdevState *); static void bdevstate_free_cb(gpointer key, gpointer value, gpointer user_data); @@ -1491,7 +1491,7 @@ static void lttv_state_free_trap_states(LttvTrapState *states, guint n) /* bdevstate stuff */ -static LttvBdevState *get_hashed_bdevstate(LttvTraceState *ts, guint16 devcode) +static LttvBdevState *get_hashed_bdevstate(LttvTraceState *ts, guint32 devcode) { gint devcode_gint = devcode; gpointer bdev = g_hash_table_lookup(ts->bdev_states, &devcode_gint); @@ -2764,7 +2764,7 @@ static gboolean bdev_request_issue(void *hook_data, void *call_data) lttv_trace_get_hook_field(th, 1)); guint oper = ltt_event_get_long_unsigned(e, lttv_trace_get_hook_field(th, 2)); - guint16 devcode = MKDEV(major,minor); + guint32 devcode = MKDEV(major,minor); /* have we seen this block device before? */ gpointer bdev = get_hashed_bdevstate(ts, devcode); @@ -2790,7 +2790,7 @@ static gboolean bdev_request_complete(void *hook_data, void *call_data) lttv_trace_get_hook_field(th, 1)); //guint oper = ltt_event_get_long_unsigned(e, // lttv_trace_get_hook_field(th, 2)); - guint16 devcode = MKDEV(major,minor); + guint32 devcode = MKDEV(major,minor); /* have we seen this block device before? */ gpointer bdev = get_hashed_bdevstate(ts, devcode); @@ -2954,8 +2954,12 @@ static gboolean sched_try_wakeup(void *hook_data, void *call_data) (LttvTraceState*)s->parent.t_context, woken_cpu, woken_pid, &s->parent.timestamp); - process->state->s = LTTV_STATE_WAIT_CPU; - process->state->change = s->parent.timestamp; + + if (process->state->s == LTTV_STATE_WAIT || process->state->s == LTTV_STATE_WAIT_FORK) + { + process->state->s = LTTV_STATE_WAIT_CPU; + process->state->change = s->parent.timestamp; + } g_debug("Wakeup: process %d on CPU %u\n", woken_pid, woken_cpu);