git.ucc.asn.au
/
tpg
/
acess2.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Usermode/libaxwin4 - Handle demarshal failure
[tpg/acess2.git]
/
KernelLand
/
Kernel
/
arch
/
x86
/
irq.c
diff --git
a/KernelLand/Kernel/arch/x86/irq.c
b/KernelLand/Kernel/arch/x86/irq.c
index
3d23636
..
6ec3c2f
100644
(file)
--- a/
KernelLand/Kernel/arch/x86/irq.c
+++ b/
KernelLand/Kernel/arch/x86/irq.c
@@
-25,12
+25,12
@@
void *gaIRQ_DataPointers[16][MAX_CALLBACKS_PER_IRQ];
*/
void IRQ_Handler(tRegs *Regs)
{
*/
void IRQ_Handler(tRegs *Regs)
{
- int i
, i
rq = Regs->int_num - 0xF0;
+ int irq = Regs->int_num - 0xF0;
int bHandled = 0;
//Log("IRQ_Handler: (Regs={int_num:%i})", Regs->int_num);
int bHandled = 0;
//Log("IRQ_Handler: (Regs={int_num:%i})", Regs->int_num);
- for( i = 0; i < MAX_CALLBACKS_PER_IRQ; i++ )
+ for( i
nt i
= 0; i < MAX_CALLBACKS_PER_IRQ; i++ )
{
if( gIRQ_Handlers[irq][i] ) {
gIRQ_Handlers[irq][i](irq, gaIRQ_DataPointers[irq][i]);
{
if( gIRQ_Handlers[irq][i] ) {
gIRQ_Handlers[irq][i](irq, gaIRQ_DataPointers[irq][i]);
@@
-58,17
+58,24
@@
void IRQ_Handler(tRegs *Regs)
*/
int IRQ_AddHandler( int Num, void (*Callback)(int, void*), void *Ptr )
{
*/
int IRQ_AddHandler( int Num, void (*Callback)(int, void*), void *Ptr )
{
- int i;
- for( i = 0; i < MAX_CALLBACKS_PER_IRQ; i++ )
+ for( int i = 0; i < MAX_CALLBACKS_PER_IRQ; i++ )
{
{
- if( gIRQ_Handlers[Num][i] == NULL ) {
- Log_Log("IRQ", "Added IRQ%i Cb#%i %p", Num, i, Callback);
+ 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;
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);
}
}
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;
}
}
UCC
git Repository :: git.ucc.asn.au