Ejemplo n.º 1
0
status_t
int_init_post_vm(kernel_args *args)
{
	int i;

	/* initialize the vector list */
	for (i = 0; i < NUM_IO_VECTORS; i++) {
		B_INITIALIZE_SPINLOCK(&sVectors[i].vector_lock);
		sVectors[i].enable_count = 0;
		sVectors[i].no_lock_vector = false;
#if DEBUG_INTERRUPTS
		sVectors[i].handled_count = 0;
		sVectors[i].unhandled_count = 0;
		sVectors[i].trigger_count = 0;
		sVectors[i].ignored_count = 0;
#endif
		sVectors[i].handler_list = NULL;
	}

#if DEBUG_INTERRUPTS
	add_debugger_command("ints", &dump_int_statistics,
		"list interrupt statistics");
#endif

	return arch_int_init_post_vm(args);
}
Ejemplo n.º 2
0
status_t
int_init_post_vm(kernel_args* args)
{
    int i;

    /* initialize the vector list */
    for (i = 0; i < NUM_IO_VECTORS; i++) {
        B_INITIALIZE_SPINLOCK(&sVectors[i].vector_lock);
        sVectors[i].enable_count = 0;
        sVectors[i].no_lock_vector = false;
        sVectors[i].type = INTERRUPT_TYPE_UNKNOWN;

        B_INITIALIZE_SPINLOCK(&sVectors[i].load_lock);
        sVectors[i].last_measure_time = 0;
        sVectors[i].last_measure_active = 0;
        sVectors[i].load = 0;

#if DEBUG_INTERRUPTS
        sVectors[i].handled_count = 0;
        sVectors[i].unhandled_count = 0;
        sVectors[i].trigger_count = 0;
        sVectors[i].ignored_count = 0;
#endif
        sVectors[i].handler_list = NULL;

        sVectorCPUAssignments[i].irq = i;
        sVectorCPUAssignments[i].count = 1;
        sVectorCPUAssignments[i].handlers_count = 0;
        sVectorCPUAssignments[i].load = 0;
        sVectorCPUAssignments[i].cpu = -1;
    }

#if DEBUG_INTERRUPTS
    add_debugger_command("ints", &dump_int_statistics,
                         "list interrupt statistics");
#endif

    add_debugger_command("int_load", &dump_int_load,
                         "list interrupt usage statistics");

    return arch_int_init_post_vm(args);
}