}
-void lttv_state__state_saved_free(LttvTraceState *self,
+void lttv_state_state_saved_free(LttvTraceState *self,
LttvAttribute *container)
{
LTTV_TRACE_STATE_GET_CLASS(self)->state_saved_free(self, container);
if(*(value.v_pointer) == NULL) tfcs->parent.e = NULL;
else {
ep = *(value.v_pointer);
- ltt_tracefile_seek_position(tfcs->parent.tf, ep);
- tfcs->parent.e = ltt_tracefile_read(tfcs->parent.tf);
- tfcs->parent.timestamp = ltt_event_time(tfcs->parent.e);
+ g_assert(tfcs->parent.t_context != NULL);
+ lttv_process_tracefile_seek_position(LTTV_TRACEFILE_CONTEXT(tfcs), ep);
}
}
}
tracefiles_tree = lttv_attribute_find_subdir(container,
LTTV_STATE_TRACEFILES);
+ g_object_ref(G_OBJECT(tracefiles_tree));
lttv_attribute_remove_by_name(container, LTTV_STATE_TRACEFILES);
type = lttv_attribute_get_by_name(container, LTTV_STATE_PROCESSES,
g_assert(type == LTTV_POINTER);
if(*(value.v_pointer) != NULL) g_free(*(value.v_pointer));
}
- lttv_attribute_recursive_free(tracefiles_tree);
+ g_object_unref(G_OBJECT(tracefiles_tree));
}
}
lttv_attribute_remove_by_name(self->parent.t_a, LTTV_STATE_SAVED_STATES);
- lttv_attribute_recursive_free(saved_states);
}
char buffer[128];
- tcs = ((LttvTraceState *)tc = tfs->parent.t_context);
+ tc = tfs->parent.t_context;
+ tcs = (LttvTraceState *)tc;
process->pid = pid;
process->last_cpu = tfs->cpu_name;
lttv_trace_find_hook(ts->parent.t, "core", "process_exit", NULL, NULL,
NULL, process_exit, &g_array_index(hooks, LttvTraceHook, 8));
- /* Add these hooks to each before_event_by_id hooks list */
+ /* Add these hooks to each event_by_id hooks list */
nb_tracefile = ltt_trace_control_tracefile_number(ts->parent.t) +
ltt_trace_per_cpu_tracefile_number(ts->parent.t);
for(k = 0 ; k < hooks->len ; k++) {
hook = g_array_index(hooks, LttvTraceHook, k);
- lttv_hooks_add(lttv_hooks_by_id_find(tfs->parent.after_event_by_id,
- hook.id), hook.h, &g_array_index(hooks, LttvTraceHook, k));
+ lttv_hooks_add(lttv_hooks_by_id_find(tfs->parent.event_by_id,
+ hook.id), hook.h, &g_array_index(hooks, LttvTraceHook, k), LTTV_PRIO_STATE);
}
}
lttv_attribute_find(self->parent.a, LTTV_STATE_HOOKS, LTTV_POINTER, &val);
lttv_attribute_find(self->parent.a, LTTV_STATE_HOOKS, LTTV_POINTER, &val);
hooks = *(val.v_pointer);
- /* Add these hooks to each before_event_by_id hooks list */
+ /* Remove these hooks from each event_by_id hooks list */
nb_tracefile = ltt_trace_control_tracefile_number(ts->parent.t) +
ltt_trace_per_cpu_tracefile_number(ts->parent.t);
for(k = 0 ; k < hooks->len ; k++) {
hook = g_array_index(hooks, LttvTraceHook, k);
lttv_hooks_remove_data(
- lttv_hooks_by_id_find(tfs->parent.after_event_by_id,
+ lttv_hooks_by_id_find(tfs->parent.event_by_id,
hook.id), hook.h, &g_array_index(hooks, LttvTraceHook, k));
}
}
for(j = 0 ; j < nb_tracefile ; j++) {
tfs = LTTV_TRACEFILE_STATE(ts->parent.tracefiles[j]);
- lttv_hooks_add(lttv_hooks_by_id_find(tfs->parent.after_event_by_id,
- hook_start.id), hook_start.h, NULL);
- lttv_hooks_add(lttv_hooks_by_id_find(tfs->parent.after_event_by_id,
- hook_end.id), hook_end.h, NULL);
+ lttv_hooks_add(lttv_hooks_by_id_find(tfs->parent.event_by_id,
+ hook_start.id), hook_start.h, NULL, LTTV_PRIO_STATE);
+ lttv_hooks_add(lttv_hooks_by_id_find(tfs->parent.event_by_id,
+ hook_end.id), hook_end.h, NULL, LTTV_PRIO_STATE);
}
}
}
+gint lttv_state_save_hook_add_event_hooks(void *hook_data, void *call_data)
+{
+ LttvTracesetState *tss = (LttvTracesetState*)(call_data);
+
+ lttv_state_save_add_event_hooks(tss);
+
+ return 0;
+}
+
void lttv_state_save_remove_event_hooks(LttvTracesetState *self)
{
for(j = 0 ; j < nb_tracefile ; j++) {
tfs = LTTV_TRACEFILE_STATE(ts->parent.tracefiles[j]);
lttv_hooks_remove_data(lttv_hooks_by_id_find(
- tfs->parent.after_event_by_id, hook_start.id), hook_start.h, NULL);
+ tfs->parent.event_by_id, hook_start.id), hook_start.h, NULL);
lttv_hooks_remove_data(lttv_hooks_by_id_find(
- tfs->parent.after_event_by_id, hook_end.id), hook_end.h, NULL);
+ tfs->parent.event_by_id, hook_end.id), hook_end.h, NULL);
}
}
}
+gint lttv_state_save_hook_remove_event_hooks(void *hook_data, void *call_data)
+{
+ LttvTracesetState *tss = (LttvTracesetState*)(call_data);
+
+ lttv_state_save_remove_event_hooks(tss);
+
+ return 0;
+}
void lttv_state_traceset_seek_time_closest(LttvTracesetState *self, LttTime t)
{