Change to the interrupt handler return values.
Also reflect the change of function name and number of parameters. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@339 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
parent
fd2ee3a598
commit
9adc7af78a
@ -38,6 +38,6 @@ int i386_double_fault(int errorcode)
|
||||
kprintf("double fault! errorcode = 0x%x\n", errorcode);
|
||||
dprintf("double fault! errorcode = 0x%x\n", errorcode);
|
||||
for(;;);
|
||||
return INT_NO_RESCHEDULE;
|
||||
return B_HANDLED_INTERRUPT;
|
||||
}
|
||||
|
||||
|
@ -156,7 +156,7 @@ bool arch_int_is_interrupts_enabled(void)
|
||||
void i386_handle_trap(struct int_frame frame); /* keep the compiler happy, this function must be called only from assembly */
|
||||
void i386_handle_trap(struct int_frame frame)
|
||||
{
|
||||
int ret = INT_NO_RESCHEDULE;
|
||||
int ret = B_HANDLED_INTERRUPT;
|
||||
|
||||
// if(frame.vector != 0x20)
|
||||
// dprintf("i386_handle_trap: vector 0x%x, ip 0x%x, cpu %d\n", frame.vector, frame.eip, smp_get_current_cpu());
|
||||
@ -235,12 +235,12 @@ void i386_handle_trap(struct int_frame frame)
|
||||
ret = int_io_interrupt_handler(frame.vector);
|
||||
} else {
|
||||
panic("i386_handle_trap: unhandled cpu trap 0x%x at ip 0x%x!\n", frame.vector, frame.eip);
|
||||
ret = INT_NO_RESCHEDULE;
|
||||
ret = B_HANDLED_INTERRUPT;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
if(ret == INT_RESCHEDULE) {
|
||||
if (ret == B_INVOKE_SCHEDULER) {
|
||||
int state = int_disable_interrupts();
|
||||
GRAB_THREAD_LOCK();
|
||||
thread_resched();
|
||||
|
@ -51,7 +51,7 @@ static int i386_spurious_interrupt(void* data)
|
||||
// spurious interrupt
|
||||
// dprintf("spurious interrupt on cpu %d\n", arch_smp_get_current_cpu());
|
||||
arch_smp_ack_interrupt();
|
||||
return INT_NO_RESCHEDULE;
|
||||
return B_HANDLED_INTERRUPT;
|
||||
}
|
||||
|
||||
static int i386_smp_error_interrupt(void* data)
|
||||
@ -59,7 +59,7 @@ static int i386_smp_error_interrupt(void* data)
|
||||
// smp error interrupt
|
||||
// dprintf("smp error interrupt on cpu %d\n", arch_smp_get_current_cpu());
|
||||
arch_smp_ack_interrupt();
|
||||
return INT_NO_RESCHEDULE;
|
||||
return B_HANDLED_INTERRUPT;
|
||||
}
|
||||
|
||||
static unsigned int apic_read(unsigned int *addr)
|
||||
@ -92,10 +92,10 @@ int arch_smp_init(kernel_args *ka)
|
||||
vm_create_anonymous_region(vm_get_kernel_aspace_id(), "ioapic", (void *)&ioapic,
|
||||
REGION_ADDR_EXACT_ADDRESS, PAGE_SIZE, REGION_WIRING_WIRED_ALREADY, LOCK_RW|LOCK_KERNEL);
|
||||
|
||||
int_set_io_interrupt_handler(0xfb, &i386_timer_interrupt, NULL);
|
||||
int_set_io_interrupt_handler(0xfd, &i386_ici_interrupt, NULL);
|
||||
int_set_io_interrupt_handler(0xfe, &i386_smp_error_interrupt, NULL);
|
||||
int_set_io_interrupt_handler(0xff, &i386_spurious_interrupt, NULL);
|
||||
install_io_interrupt_handler(0xfb, &i386_timer_interrupt, NULL, 0);
|
||||
install_io_interrupt_handler(0xfd, &i386_ici_interrupt, NULL, 0);
|
||||
install_io_interrupt_handler(0xfe, &i386_smp_error_interrupt, NULL, 0);
|
||||
install_io_interrupt_handler(0xff, &i386_spurious_interrupt, NULL, 0);
|
||||
} else {
|
||||
num_cpus = 1;
|
||||
}
|
||||
|
@ -72,7 +72,7 @@ int arch_init_timer(kernel_args *ka)
|
||||
{
|
||||
dprintf("arch_init_timer: entry\n");
|
||||
|
||||
int_set_io_interrupt_handler(0x20, &isa_timer_interrupt, NULL);
|
||||
install_io_interrupt_handler(0x20, &isa_timer_interrupt, NULL, 0);
|
||||
// apic timer interrupt set up by smp code
|
||||
|
||||
return 0;
|
||||
|
Loading…
Reference in New Issue
Block a user