From 2501204d000bb996d36759d9e293eee3df07f90d Mon Sep 17 00:00:00 2001 From: compudj Date: Fri, 10 Mar 2006 17:04:05 +0000 Subject: [PATCH] stats hook error handling better git-svn-id: http://ltt.polymtl.ca/svn@1674 04897980-b3bd-0310-b5e0-8ef037075253 --- ltt/branches/poly/lttv/lttv/stats.c | 85 +++++++++++++++-------------- 1 file changed, 45 insertions(+), 40 deletions(-) diff --git a/ltt/branches/poly/lttv/lttv/stats.c b/ltt/branches/poly/lttv/lttv/stats.c index 22600255..06f6fa39 100644 --- a/ltt/branches/poly/lttv/lttv/stats.c +++ b/ltt/branches/poly/lttv/lttv/stats.c @@ -823,6 +823,7 @@ void lttv_stats_add_event_hooks(LttvTracesetStats *self) LttvAttributeValue val; gint ret; + gint hn; nb_trace = lttv_traceset_number(traceset); for(i = 0 ; i < nb_trace ; i++) { @@ -833,152 +834,156 @@ void lttv_stats_add_event_hooks(LttvTracesetStats *self) hooks = g_array_sized_new(FALSE, FALSE, sizeof(LttvTraceHook), 9); g_array_set_size(hooks, 9); + hn=0; ret = lttv_trace_find_hook(ts->parent.parent.t, LTT_FACILITY_KERNEL_ARCH, LTT_EVENT_SYSCALL_ENTRY, LTT_FIELD_SYSCALL_ID, 0, 0, before_syscall_entry, NULL, - &g_array_index(hooks, LttvTraceHook, 0)); - g_assert(!ret); + &g_array_index(hooks, LttvTraceHook, hn++)); + if(ret) hn--; ret = lttv_trace_find_hook(ts->parent.parent.t, LTT_FACILITY_KERNEL_ARCH, LTT_EVENT_SYSCALL_EXIT, 0, 0, 0, before_syscall_exit, NULL, - &g_array_index(hooks, LttvTraceHook, 1)); - g_assert(!ret); + &g_array_index(hooks, LttvTraceHook, hn++)); + if(ret) hn--; ret = lttv_trace_find_hook(ts->parent.parent.t, LTT_FACILITY_KERNEL, LTT_EVENT_TRAP_ENTRY, LTT_FIELD_TRAP_ID, 0, 0, before_trap_entry, NULL, - &g_array_index(hooks, LttvTraceHook, 2)); - g_assert(!ret); + &g_array_index(hooks, LttvTraceHook, hn++)); + if(ret) hn--; ret = lttv_trace_find_hook(ts->parent.parent.t, LTT_FACILITY_KERNEL, LTT_EVENT_TRAP_EXIT, 0, 0, 0, before_trap_exit, NULL, - &g_array_index(hooks, LttvTraceHook, 3)); - g_assert(!ret); + &g_array_index(hooks, LttvTraceHook, hn++)); + if(ret) hn--; ret = lttv_trace_find_hook(ts->parent.parent.t, LTT_FACILITY_KERNEL, LTT_EVENT_IRQ_ENTRY, LTT_FIELD_IRQ_ID, 0, 0, before_irq_entry, NULL, - &g_array_index(hooks, LttvTraceHook, 4)); - g_assert(!ret); + &g_array_index(hooks, LttvTraceHook, hn++)); + if(ret) hn--; ret = lttv_trace_find_hook(ts->parent.parent.t, LTT_FACILITY_KERNEL, LTT_EVENT_IRQ_EXIT, 0, 0, 0, before_irq_exit, NULL, - &g_array_index(hooks, LttvTraceHook, 5)); - g_assert(!ret); + &g_array_index(hooks, LttvTraceHook, hn++)); + if(ret) hn--; ret = lttv_trace_find_hook(ts->parent.parent.t, LTT_FACILITY_KERNEL, LTT_EVENT_SOFT_IRQ_ENTRY, LTT_FIELD_SOFT_IRQ_ID, 0, 0, before_soft_irq_entry, NULL, - &g_array_index(hooks, LttvTraceHook, 6)); - g_assert(!ret); + &g_array_index(hooks, LttvTraceHook, hn++)); + if(ret) hn--; ret = lttv_trace_find_hook(ts->parent.parent.t, LTT_FACILITY_KERNEL, LTT_EVENT_SOFT_IRQ_EXIT, 0, 0, 0, before_soft_irq_exit, NULL, - &g_array_index(hooks, LttvTraceHook, 7)); - g_assert(!ret); + &g_array_index(hooks, LttvTraceHook, hn++)); + if(ret) hn--; ret = lttv_trace_find_hook(ts->parent.parent.t, LTT_FACILITY_PROCESS, LTT_EVENT_SCHEDCHANGE, LTT_FIELD_OUT, LTT_FIELD_IN, LTT_FIELD_OUT_STATE, before_schedchange, NULL, - &g_array_index(hooks, LttvTraceHook, 8)); - g_assert(!ret); + &g_array_index(hooks, LttvTraceHook, hn++)); + if(ret) hn--; + g_array_set_size(hooks, hn); before_hooks = hooks; hooks = g_array_sized_new(FALSE, FALSE, sizeof(LttvTraceHook), 11); g_array_set_size(hooks, 11); + hn=0; ret = lttv_trace_find_hook(ts->parent.parent.t, LTT_FACILITY_KERNEL_ARCH, LTT_EVENT_SYSCALL_ENTRY, LTT_FIELD_SYSCALL_ID, 0, 0, after_syscall_entry, NULL, - &g_array_index(hooks, LttvTraceHook, 0)); - g_assert(!ret); + &g_array_index(hooks, LttvTraceHook, hn++)); + if(ret) hn--; ret = lttv_trace_find_hook(ts->parent.parent.t, LTT_FACILITY_KERNEL_ARCH, LTT_EVENT_SYSCALL_EXIT, 0, 0, 0, after_syscall_exit, NULL, - &g_array_index(hooks, LttvTraceHook, 1)); - g_assert(!ret); + &g_array_index(hooks, LttvTraceHook, hn++)); + if(ret) hn--; ret = lttv_trace_find_hook(ts->parent.parent.t, LTT_FACILITY_KERNEL, LTT_EVENT_TRAP_ENTRY, LTT_FIELD_TRAP_ID, 0, 0, after_trap_entry, NULL, - &g_array_index(hooks, LttvTraceHook, 2)); - g_assert(!ret); + &g_array_index(hooks, LttvTraceHook, hn++)); + if(ret) hn--; ret = lttv_trace_find_hook(ts->parent.parent.t, LTT_FACILITY_KERNEL, LTT_EVENT_TRAP_EXIT, 0, 0, 0, after_trap_exit, NULL, - &g_array_index(hooks, LttvTraceHook, 3)); - g_assert(!ret); + &g_array_index(hooks, LttvTraceHook, hn++)); + if(ret) hn--; ret = lttv_trace_find_hook(ts->parent.parent.t, LTT_FACILITY_KERNEL, LTT_EVENT_IRQ_ENTRY, LTT_FIELD_IRQ_ID, 0, 0, after_irq_entry, NULL, - &g_array_index(hooks, LttvTraceHook, 4)); - g_assert(!ret); + &g_array_index(hooks, LttvTraceHook, hn++)); + if(ret) hn--; ret = lttv_trace_find_hook(ts->parent.parent.t, LTT_FACILITY_KERNEL, LTT_EVENT_IRQ_EXIT, 0, 0, 0, after_irq_exit, NULL, - &g_array_index(hooks, LttvTraceHook, 5)); - g_assert(!ret); + &g_array_index(hooks, LttvTraceHook, hn++)); + if(ret) hn--; ret = lttv_trace_find_hook(ts->parent.parent.t, LTT_FACILITY_KERNEL, LTT_EVENT_SOFT_IRQ_ENTRY, LTT_FIELD_SOFT_IRQ_ID, 0, 0, after_irq_entry, NULL, - &g_array_index(hooks, LttvTraceHook, 6)); - g_assert(!ret); + &g_array_index(hooks, LttvTraceHook, hn++)); + if(ret) hn--; ret = lttv_trace_find_hook(ts->parent.parent.t, LTT_FACILITY_KERNEL, LTT_EVENT_SOFT_IRQ_EXIT, 0, 0, 0, after_soft_irq_exit, NULL, - &g_array_index(hooks, LttvTraceHook, 7)); - g_assert(!ret); + &g_array_index(hooks, LttvTraceHook, hn++)); + if(ret) hn--; ret = lttv_trace_find_hook(ts->parent.parent.t, LTT_FACILITY_PROCESS, LTT_EVENT_FORK, LTT_FIELD_PARENT_PID, LTT_FIELD_CHILD_PID, 0, process_fork, NULL, - &g_array_index(hooks, LttvTraceHook, 8)); - g_assert(!ret); + &g_array_index(hooks, LttvTraceHook, hn++)); + if(ret) hn--; ret = lttv_trace_find_hook(ts->parent.parent.t, LTT_FACILITY_PROCESS, LTT_EVENT_EXIT, LTT_FIELD_PID, 0, 0, process_exit, NULL, - &g_array_index(hooks, LttvTraceHook, 9)); - g_assert(!ret); + &g_array_index(hooks, LttvTraceHook, hn++)); + if(ret) hn--; ret = lttv_trace_find_hook(ts->parent.parent.t, LTT_FACILITY_PROCESS, LTT_EVENT_FREE, LTT_FIELD_PID, 0, 0, process_free, NULL, - &g_array_index(hooks, LttvTraceHook, 10)); - g_assert(!ret); + &g_array_index(hooks, LttvTraceHook, hn++)); + if(ret) hn--; + g_array_set_size(hooks, hn); after_hooks = hooks; -- 2.34.1