X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=KernelLand%2FKernel%2Farch%2Fx86%2Firq.c;h=7250debe195c950e279706a00753e32cd19b08da;hb=479d0634670b58da044bc58149662adba0ad1d0b;hp=3d23636e72a31fd88d0c0f2e4447dec45f35d24c;hpb=4538ee944b71b52f183809978cccfe60143d70c5;p=tpg%2Facess2.git diff --git a/KernelLand/Kernel/arch/x86/irq.c b/KernelLand/Kernel/arch/x86/irq.c index 3d23636e..7250debe 100644 --- a/KernelLand/Kernel/arch/x86/irq.c +++ b/KernelLand/Kernel/arch/x86/irq.c @@ -61,14 +61,22 @@ int IRQ_AddHandler( int Num, void (*Callback)(int, void*), void *Ptr ) int i; for( i = 0; i < MAX_CALLBACKS_PER_IRQ; i++ ) { - if( gIRQ_Handlers[Num][i] == NULL ) { + if( gIRQ_Handlers[Num][i] == NULL ) + { Log_Log("IRQ", "Added IRQ%i Cb#%i %p", Num, i, Callback); gIRQ_Handlers[Num][i] = Callback; gaIRQ_DataPointers[Num][i] = Ptr; - return 1; + return Num * MAX_CALLBACKS_PER_IRQ + i; } } Log_Warning("IRQ", "No free callbacks on IRQ%i", Num); - return 0; + return -1; +} + +void IRQ_RemHandler(int Handle) +{ + int Num = Handle / MAX_CALLBACKS_PER_IRQ; + int id = Handle % MAX_CALLBACKS_PER_IRQ; + gIRQ_Handlers[Num][id] = NULL; }