2 Copyright © 1995-2006, The AROS Development Team. All rights reserved.
11 #include <proto/exec.h>
12 #include <proto/utility.h>
13 #include <proto/oop.h>
15 #include <exec/alerts.h>
16 #include <exec/memory.h>
17 #include <aros/system.h>
22 #include <aros/debug.h>
24 /* Don't initialize them with "= 0", otherwise they end up in the DATA segment! */
26 static OOP_AttrBase HiddIRQAttrBase
;
28 static struct OOP_ABDescr attrbases
[] =
30 { IID_Hidd_IRQ
, &HiddIRQAttrBase
},
34 /*** HIDDIRQ::AddHandler() ***************************************/
36 BOOL
PCIrq__Hidd_IRQ__AddHandler(OOP_Class
*cl
, OOP_Object
*obj
, struct pHidd_IRQ_AddHandler
*msg
)
38 LONG irqnum
= msg
->id
;
40 EnterFunc(bug("HIDDIRQ::AddHandler()\n"));
41 D(bug("Adding handler %s, irq %d\n",msg
->handlerinfo
->h_Node
.ln_Name
, msg
->id
));
51 case vHidd_IRQ_Keyboard
:
55 case vHidd_IRQ_Serial2
:
59 case vHidd_IRQ_Serial1
:
63 case vHidd_IRQ_Floppy
:
85 D(bug("Translated IRQ number is %d\n", irqnum
));
87 if (irqnum
>= 0 && irqnum
< 16)
89 /* Adding an IRQ handler has to be atomic */
91 Enqueue((struct List
*)&ISD(cl
)->irqlist
[irqnum
],(struct Node
*)msg
->handlerinfo
);
94 ReturnInt("HIDDIRQ::AddHandler", ULONG
, TRUE
);
97 ReturnInt("HIDDIRQ::AddHandler", ULONG
, FALSE
);
100 /*** HIDDIRQ::RemHandler() ***************************************/
102 VOID
PCIrq__Hidd_IRQ__RemHandler(OOP_Class
*cl
, OOP_Object
*obj
, struct pHidd_IRQ_RemHandler
*msg
)
104 EnterFunc(bug("HIDDIRQ::RemHandler()\n"));
105 D(bug("Removing handler %s\n",msg
->handlerinfo
->h_Node
.ln_Name
));
108 Remove((struct Node
*)msg
->handlerinfo
);
111 ReturnVoid("HIDDIRQ::RemHandler");
114 /*** HIDDIRQ::CauseIRQ() *****************************************/
116 VOID
PCIrq__Hidd_IRQ__CauseIRQ(OOP_Class
*cl
, OOP_Object
*obj
, struct pHidd_CauseIRQ
*msg
)
118 EnterFunc(bug("HIDDIRQ::CauseIRQ()\n"));
119 #warning TODO: Write CauseIRQ method
120 ReturnVoid("HIDDIRQ::CauseIRQ");