* This fixes the broken count of unhandled interrupts which caused some

problems in the past (it only worked for level triggered interrupts).
* Of course, the actual problem is that on current hardware we detect
  almost all interrupts as edge triggered...


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24239 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Axel Dörfler 2008-03-04 21:49:40 +00:00
parent 8fa3f81a66
commit 753a97024e

View File

@ -1,5 +1,5 @@
/*
* Copyright 2002-2006, Axel Dörfler, axeld@pinc-software.de. All rights reserved.
* Copyright 2002-2008, Axel Dörfler, axeld@pinc-software.de. All rights reserved.
* Distributed under the terms of the MIT License.
*
* Copyright 2001-2002, Travis Geiselbrecht. All rights reserved.
@ -126,12 +126,12 @@ int_init_post_vm(kernel_args *args)
io_vectors[i].vector_lock = 0; /* initialize spinlock */
io_vectors[i].enable_count = 0;
io_vectors[i].no_lock_vector = false;
#ifdef DEBUG_INT
io_vectors[i].handled_count = 0;
io_vectors[i].unhandled_count = 0;
io_vectors[i].trigger_count = 0;
io_vectors[i].ignored_count = 0;
#endif
#ifdef DEBUG_INT
io_vectors[i].handled_count = 0;
io_vectors[i].unhandled_count = 0;
io_vectors[i].trigger_count = 0;
io_vectors[i].ignored_count = 0;
#endif
initque(&io_vectors[i].handler_list); /* initialize handler queue */
}
@ -302,7 +302,7 @@ int_io_interrupt_handler(int vector, bool levelTriggered)
#ifdef DEBUG_INT
io_vectors[vector].trigger_count++;
if (status != B_UNHANDLED_INTERRUPT) {
if (status != B_UNHANDLED_INTERRUPT || handled || invokeScheduler) {
io_vectors[vector].handled_count++;
} else {
io_vectors[vector].unhandled_count++;