/*---------------------------------------------------------------------------*/ static void _rtp_pbuf_ctx_push_is (void* data) { RTP_HANDLE irqHandle; irqHandle = rtp_irq_push_disable( ); _rtp_pbuf_ctx_push(data); rtp_irq_pop(irqHandle); }
/*---------------------------------------------------------------------------*/ static void* _rtp_pbuf_ctx_pop_is (RTP_PBUF_CTX* pbufCtx) { RTP_PBUF_ELEMENT* tempElement; RTP_HANDLE irqHandle; irqHandle = rtp_irq_push_disable( ); tempElement = _rtp_pbuf_ctx_pop(pbufCtx); rtp_irq_pop(irqHandle); return ((void*)tempElement); }
/*----------------------------------------------------------------------* rtp_irq_hook_interrupt *----------------------------------------------------------------------*/ RTP_BOOL rtp_irq_hook_interrupt(RTP_PFVOID pIface, RTP_IRQ_FN_POINTER c_strategy, RTP_IRQ_FN_POINTER c_interrupt) { int sp; PIFACE pi; int IRQ = RTKMAXIRQS - 24; pi = (PIFACE) pIface; /* Make the index to the isr strategy the same as the interface index. */ sp = rtp_irq_push_disable(); _rtkIRQSetSysHandler(IRQ, (RTKIRQHandler) c_interrupt); _rtkIRQSetSysHandlerArgs(IRQ, 1, pi->minor_number, 0); RTKEnableIRQ(IRQ); #if (INCLUDE_TASK_ISRS) pi->irq_no = pi->ctrl.index; if (pi->irq_no > (KS_NUM_INTS-1)) { return(RTP_FALSE); } rtip_isr_strategy[pi->irq_no] = c_strategy; rtip_args[pi->irq_no] = pi->minor_number; OS_SET_INTERRUPT_SIGNAL(pi); #endif rtp_irq_pop(sp); return(RTP_TRUE); }