projects
/
lttv.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
add support for block devices in restore_init_state()
[lttv.git]
/
ltt
/
branches
/
poly
/
lttv
/
lttv
/
state.c
diff --git
a/ltt/branches/poly/lttv/lttv/state.c
b/ltt/branches/poly/lttv/lttv/state.c
index 58ae0a2f65e089eaf26808d90fceafb9810b00e5..bc4884ca6e19950cb8711ef647070bb0397909e7 100644
(file)
--- a/
ltt/branches/poly/lttv/lttv/state.c
+++ b/
ltt/branches/poly/lttv/lttv/state.c
@@
-185,6
+185,11
@@
static void lttv_state_free_process_table(GHashTable *processes);
static void lttv_trace_states_read_raw(LttvTraceState *tcs, FILE *fp,
GPtrArray *quarktable);
static void lttv_trace_states_read_raw(LttvTraceState *tcs, FILE *fp,
GPtrArray *quarktable);
+/* Resource function prototypes */
+static void bdev_state_free(gpointer key, gpointer value, gpointer user_data);
+static LttvBdevState *bdev_state_get(LttvTraceState *ts, guint16 devcode);
+
+
void lttv_state_save(LttvTraceState *self, LttvAttribute *container)
{
LTTV_TRACE_STATE_GET_CLASS(self)->state_save(self, container);
void lttv_state_save(LttvTraceState *self, LttvAttribute *container)
{
LTTV_TRACE_STATE_GET_CLASS(self)->state_save(self, container);
@@
-298,6
+303,9
@@
restore_init_state(LttvTraceState *self)
if(self->irq_states[i].mode_stack->len > 0)
g_array_remove_range(self->irq_states[i].mode_stack, 0, self->irq_states[i].mode_stack->len);
}
if(self->irq_states[i].mode_stack->len > 0)
g_array_remove_range(self->irq_states[i].mode_stack, 0, self->irq_states[i].mode_stack->len);
}
+
+ g_hash_table_foreach(self->bdev_states, bdev_state_free, NULL);
+ g_hash_table_steal_all(self->bdev_states);
#if 0
nb_tracefile = self->parent.tracefiles->len;
#if 0
nb_tracefile = self->parent.tracefiles->len;
@@
-1736,7
+1744,7
@@
static void cpu_push_mode(LttvCPUState *cpust, LttvCPUMode state)
static void cpu_pop_mode(LttvCPUState *cpust)
{
static void cpu_pop_mode(LttvCPUState *cpust)
{
- if(cpust->mode_stack->len
=
= 1)
+ if(cpust->mode_stack->len
<
= 1)
cpu_set_base_mode(cpust, LTTV_CPU_UNKNOWN);
else
g_array_set_size(cpust->mode_stack, cpust->mode_stack->len - 1);
cpu_set_base_mode(cpust, LTTV_CPU_UNKNOWN);
else
g_array_set_size(cpust->mode_stack, cpust->mode_stack->len - 1);
@@
-1757,7
+1765,7
@@
static void bdev_push_mode(LttvBdevState *bdevst, LttvBdevMode state)
static void bdev_pop_mode(LttvBdevState *bdevst)
{
static void bdev_pop_mode(LttvBdevState *bdevst)
{
- if(bdevst->mode_stack->len
=
= 1)
+ if(bdevst->mode_stack->len
<
= 1)
bdev_set_base_mode(bdevst, LTTV_BDEV_UNKNOWN);
else
g_array_set_size(bdevst->mode_stack, bdevst->mode_stack->len - 1);
bdev_set_base_mode(bdevst, LTTV_BDEV_UNKNOWN);
else
g_array_set_size(bdevst->mode_stack, bdevst->mode_stack->len - 1);
@@
-1777,7
+1785,7
@@
static void irq_push_mode(LttvIRQState *irqst, LttvIRQMode state)
static void irq_pop_mode(LttvIRQState *irqst)
{
static void irq_pop_mode(LttvIRQState *irqst)
{
- if(irqst->mode_stack->len
=
= 1)
+ if(irqst->mode_stack->len
<
= 1)
irq_set_base_mode(irqst, LTTV_IRQ_UNKNOWN);
else
g_array_set_size(irqst->mode_stack, irqst->mode_stack->len - 1);
irq_set_base_mode(irqst, LTTV_IRQ_UNKNOWN);
else
g_array_set_size(irqst->mode_stack, irqst->mode_stack->len - 1);
@@
-2259,7
+2267,7
@@
static gboolean soft_irq_entry(void *hook_data, void *call_data)
return FALSE;
}
return FALSE;
}
-LttvBdevState *bdev_state_get(LttvTraceState *ts, guint16 devcode)
+
static
LttvBdevState *bdev_state_get(LttvTraceState *ts, guint16 devcode)
{
gint devcode_gint = devcode;
gpointer bdev = g_hash_table_lookup(ts->bdev_states, &devcode_gint);
{
gint devcode_gint = devcode;
gpointer bdev = g_hash_table_lookup(ts->bdev_states, &devcode_gint);
@@
-2278,6
+2286,14
@@
LttvBdevState *bdev_state_get(LttvTraceState *ts, guint16 devcode)
return bdev;
}
return bdev;
}
+static void bdev_state_free(gpointer key, gpointer value, gpointer user_data)
+{
+ LttvBdevState *bds = (LttvBdevState *) value;
+
+ g_array_free(bds->mode_stack, FALSE);
+ g_free(bds);
+}
+
static gboolean bdev_request_issue(void *hook_data, void *call_data)
{
LttvTracefileState *s = (LttvTracefileState *)call_data;
static gboolean bdev_request_issue(void *hook_data, void *call_data)
{
LttvTracefileState *s = (LttvTracefileState *)call_data;
This page took
0.024552 seconds
and
4
git commands to generate.