Changeset 554 for cmedia/trunk/Lib32/irq.c
- Timestamp:
- Jul 27, 2011, 8:04:07 PM (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
cmedia/trunk/Lib32/irq.c
r354 r554 155 155 156 156 157 158 159 160 161 #if 0162 163 static IRQHANDLER_INFO irqHandlers[MAX_IRQS][MAX_SHAREDIRQS] = {0};164 static ULONG nrIrqHandlers[MAX_IRQS] = {0};165 static ULONG eoiIrq[MAX_IRQS] = {0};166 167 //******************************************************************************168 //******************************************************************************169 int request_irq(unsigned int irq,170 void (*handler)(int, void *, void *),171 unsigned long x0, const char *x1, void *x2)172 {173 int i;174 if(irq > 0xF)175 return 0;176 177 for(i=0;i<MAX_SHAREDIRQS;i++) {178 if(irqHandlers[irq][i].handler == 0) {179 irqHandlers[irq][i].handler = handler;180 irqHandlers[irq][i].x0 = x0;181 irqHandlers[irq][i].x1 = (char *)x1;182 irqHandlers[irq][i].x2 = x2;183 nrIrqHandlers[irq]++;184 if(OSS32_SetIrq(irq, (ULONG)&oss_process_interrupt) == FALSE) {185 break;186 }187 return 0;188 }189 }190 dprintf(("request_irq: Unable to register irq handler for irq %d\n", irq));191 return 1;192 }193 //******************************************************************************194 //******************************************************************************195 void free_irq(unsigned int irq, void *userdata)196 {197 int i;198 for(i=0;i<MAX_SHAREDIRQS;i++) {199 if(irqHandlers[irq][i].x2 == userdata) {200 irqHandlers[irq][i].handler = 0;201 irqHandlers[irq][i].x0 = 0;202 irqHandlers[irq][i].x1 = 0;203 irqHandlers[irq][i].x2 = 0;204 if(--nrIrqHandlers[irq] == 0) {205 OSS32_FreeIrq(irq);206 }207 break;208 }209 }210 }211 //******************************************************************************212 //******************************************************************************213 void eoi_irq(unsigned int irq)214 {215 if(irq > 0xf) {216 DebugInt3();217 return;218 }219 eoiIrq[irq]++;220 }221 //******************************************************************************222 //******************************************************************************223 BOOL _cdecl oss_process_interrupt(int irq)224 {225 // BOOL rc;226 int i;227 for(i=0;i<MAX_SHAREDIRQS;i++) {228 if(irqHandlers[irq][i].handler != 0) {229 irqHandlers[irq][i].handler(irq, irqHandlers[irq][i].x2, 0);230 231 if( eoiIrq[irq] > 0 ) {232 eoiIrq[irq] = 0; return TRUE;233 }234 /*235 rc = (eoiIrq[irq] > 0);236 if(rc) {237 eoiIrq[irq] = 0;238 return rc;239 }240 */241 }242 }243 return FALSE;244 }245 //******************************************************************************246 //******************************************************************************247 248 #endif249
Note:
See TracChangeset
for help on using the changeset viewer.