Subversion Repositories HelenOS

Rev

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

Rev 1875 Rev 1923
Line 563... Line 563...
563
        return 0;
563
        return 0;
564
    }
564
    }
565
    return (unative_t)call;
565
    return (unative_t)call;
566
}
566
}
567
 
567
 
568
/** Connect irq handler to task */
568
/** Connect irq handler to task.
-
 
569
 *
-
 
570
 * @param inr IRQ number.
-
 
571
 * @param devno Device number.
-
 
572
 * @param method Method to be associated with the notification.
-
 
573
 * @param ucode Uspace pointer to the top-half pseudocode.
-
 
574
 *
-
 
575
 * @return EPERM or a return code returned by ipc_irq_register().
-
 
576
 */
569
unative_t sys_ipc_register_irq(int irq, irq_code_t *ucode)
577
unative_t sys_ipc_register_irq(inr_t inr, devno_t devno, unative_t method, irq_code_t *ucode)
570
{
578
{
571
    if (!(cap_get(TASK) & CAP_IRQ_REG))
579
    if (!(cap_get(TASK) & CAP_IRQ_REG))
572
        return EPERM;
580
        return EPERM;
573
 
581
 
574
    if (irq >= IRQ_COUNT || irq <= -IPC_IRQ_RESERVED_VIRTUAL)
-
 
575
        return (unative_t) ELIMIT;
-
 
576
   
-
 
577
    irq_ipc_bind_arch(irq);
-
 
578
 
-
 
579
    return ipc_irq_register(&TASK->answerbox, irq, ucode);
582
    return ipc_irq_register(&TASK->answerbox, inr, devno, method, ucode);
580
}
583
}
581
 
584
 
582
/* Disconnect irq handler from task */
585
/** Disconnect irq handler from task.
-
 
586
 *
-
 
587
 * @param inr IRQ number.
-
 
588
 * @param devno Device number.
-
 
589
 */
583
unative_t sys_ipc_unregister_irq(int irq)
590
unative_t sys_ipc_unregister_irq(inr_t inr, devno_t devno)
584
{
591
{
585
    if (!(cap_get(TASK) & CAP_IRQ_REG))
592
    if (!(cap_get(TASK) & CAP_IRQ_REG))
586
        return EPERM;
593
        return EPERM;
587
 
594
 
588
    if (irq >= IRQ_COUNT || irq <= -IPC_IRQ_RESERVED_VIRTUAL)
-
 
589
        return (unative_t) ELIMIT;
-
 
590
 
-
 
591
    ipc_irq_unregister(&TASK->answerbox, irq);
595
    ipc_irq_unregister(&TASK->answerbox, inr, devno);
592
 
596
 
593
    return 0;
597
    return 0;
594
}
598
}
595
 
599
 
596
/** @}
600
/** @}