X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Kernel%2Farch%2Fx86%2Firq.c;h=9e0647f25145bf748894d49c6ce8a651f0dc17b7;hb=ca05044548d5c1de87c030d625a305731a6cc665;hp=7e565971506ff037247bbf3a2cea08b78caeb70c;hpb=b37a72724f8584364a3b0f3c57882e803155e499;p=tpg%2Facess2.git diff --git a/Kernel/arch/x86/irq.c b/Kernel/arch/x86/irq.c index 7e565971..9e0647f2 100644 --- a/Kernel/arch/x86/irq.c +++ b/Kernel/arch/x86/irq.c @@ -2,7 +2,7 @@ * AcessOS Microkernel Version * irq.c */ -#include +#include // === CONSTANTS === #define MAX_CALLBACKS_PER_IRQ 4 @@ -21,18 +21,18 @@ tIRQ_Callback gIRQ_Handlers[16][MAX_CALLBACKS_PER_IRQ]; void IRQ_Handler(tRegs *Regs) { int i; - + Regs->int_num -= 0xF0; // Adjust - + //Log("IRQ_Handler: (Regs={int_num:%i})", Regs->int_num); - + for( i = 0; i < MAX_CALLBACKS_PER_IRQ; i++ ) { //Log(" IRQ_Handler: Call %p", gIRQ_Handlers[Regs->int_num][i]); if( gIRQ_Handlers[Regs->int_num][i] ) gIRQ_Handlers[Regs->int_num][i](Regs->int_num); } - + //Log(" IRQ_Handler: Resetting"); if(Regs->int_num >= 8) outb(0xA0, 0x20); // ACK IRQ (Secondary PIC) @@ -49,10 +49,12 @@ int IRQ_AddHandler( int Num, void (*Callback)(int) ) for( i = 0; i < MAX_CALLBACKS_PER_IRQ; i++ ) { if( gIRQ_Handlers[Num][i] == NULL ) { + Log("IRQ_AddHandler: Added IRQ%i Cb#%i %p", Num, i, Callback); gIRQ_Handlers[Num][i] = Callback; return 1; } } - + + Warning("IRQ_AddHandler - No free callbacks on IRQ%i", Num); return 0; }