+static void expand_trap_table(LttvTraceState *ts, int id)
+{
+ guint new_nb = check_expand(ts->nb_traps, id);
+ guint i;
+ if(likely(new_nb == ts->nb_traps))
+ return;
+ expand_name_table(ts, &ts->trap_names, ts->nb_traps, new_nb);
+ fill_name_table(ts, ts->trap_names, ts->nb_traps, new_nb, "trap");
+ /* Update the table size */
+ ts->nb_traps = new_nb;
+
+ LttvTrapState *old_table = ts->trap_states;
+ ts->trap_states = g_new(LttvTrapState, new_nb);
+ memcpy(ts->trap_states, old_table,
+ ts->nb_traps * sizeof(LttvTrapState));
+ for(i = ts->nb_traps; i < new_nb; i++)
+ ts->trap_states[i].running = 0;
+}
+
+static void expand_irq_table(LttvTraceState *ts, int id)
+{
+ guint new_nb = check_expand(ts->nb_irqs, id);
+ guint i;
+ if(likely(new_nb == ts->nb_irqs))
+ return;
+ expand_name_table(ts, &ts->irq_names, ts->nb_irqs, new_nb);
+ fill_name_table(ts, ts->irq_names, ts->nb_irqs, new_nb, "irq");
+
+ LttvIRQState *old_table = ts->irq_states;
+ ts->irq_states = g_new(LttvIRQState, new_nb);
+ memcpy(ts->irq_states, old_table, ts->nb_irqs * sizeof(LttvIRQState));
+ for(i = ts->nb_irqs; i < new_nb; i++) {
+ ts->irq_states[i].mode_stack = g_array_new(FALSE, FALSE, sizeof(LttvIRQMode));
+ }
+
+ /* Update the table size */
+ ts->nb_irqs = new_nb;
+}
+
+static void expand_soft_irq_table(LttvTraceState *ts, int id)
+{
+ guint new_nb = check_expand(ts->nb_soft_irqs, id);
+ guint i;
+ if(likely(new_nb == ts->nb_soft_irqs))
+ return;
+ expand_name_table(ts, &ts->soft_irq_names, ts->nb_soft_irqs, new_nb);
+ fill_name_table(ts, ts->soft_irq_names, ts->nb_soft_irqs, new_nb, "softirq");
+
+ LttvSoftIRQState *old_table = ts->soft_irq_states;
+ ts->soft_irq_states = g_new(LttvSoftIRQState, new_nb);
+ memcpy(ts->soft_irq_states, old_table,
+ ts->nb_soft_irqs * sizeof(LttvSoftIRQState));
+ for(i = ts->nb_soft_irqs; i < new_nb; i++)
+ ts->soft_irq_states[i].running = 0;
+
+ /* Update the table size */
+ ts->nb_soft_irqs = new_nb;
+}