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); }
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); }