Ignore:
Timestamp:
Jul 27, 2011, 8:04:07 PM (14 years ago)
Author:
rudi
Message:

Update to version 0.2.3

File:
1 edited

Legend:

Unmodified
Added
Removed
  • cmedia/trunk/Lib32/irq.c

    r354 r554  
    155155
    156156
    157 
    158 
    159 
    160 
    161 #if     0
    162 
    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 #endif
    249 
Note: See TracChangeset for help on using the changeset viewer.