Subversion Repositories HelenOS

Rev

Rev 2089 | Rev 2117 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2089 Rev 2107
Line 300... Line 300...
300
 
300
 
301
    bool rv;
301
    bool rv;
302
   
302
   
303
    spinlock_lock(&irq->lock);
303
    spinlock_lock(&irq->lock);
304
    if (devno == -1) {
304
    if (devno == -1) {
305
        /* Invoked by irq_dispatch(). */
305
        /* Invoked by irq_dispatch_and_lock(). */
306
        rv = ((irq->inr == inr) && (irq->claim() == IRQ_ACCEPT));
306
        rv = ((irq->inr == inr) && (irq->claim() == IRQ_ACCEPT));
307
    } else {
307
    } else {
308
        /* Invoked by irq_find(). */
308
        /* Invoked by irq_find_and_lock(). */
309
        rv = ((irq->inr == inr) && (irq->devno == devno));
309
        rv = ((irq->inr == inr) && (irq->devno == devno));
310
    }
310
    }
311
   
311
   
312
    /* unlock only on non-match */
312
    /* unlock only on non-match */
313
    if (!rv)
313
    if (!rv)
Line 359... Line 359...
359
    devno_t devno = (devno_t) key[KEY_DEVNO];
359
    devno_t devno = (devno_t) key[KEY_DEVNO];
360
    bool rv;
360
    bool rv;
361
   
361
   
362
    spinlock_lock(&irq->lock);
362
    spinlock_lock(&irq->lock);
363
    if (devno == -1) {
363
    if (devno == -1) {
364
        /* Invoked by irq_dispatch() */
364
        /* Invoked by irq_dispatch_and_lock() */
365
        rv = (irq->claim() == IRQ_ACCEPT);
365
        rv = (irq->claim() == IRQ_ACCEPT);
366
    } else {
366
    } else {
367
        /* Invoked by irq_find() */
367
        /* Invoked by irq_find_and_lock() */
368
        rv = (irq->devno == devno);
368
        rv = (irq->devno == devno);
369
    }
369
    }
370
   
370
   
371
    /* unlock only on non-match */
371
    /* unlock only on non-match */
372
    if (!rv)
372
    if (!rv)