Q_NODE* qEach( Q_HEAD *pQHead, FUNCPTR func, int arg ) { return Q_EACH(pQHead, func, arg); }
Q_NODE *qEach ( Q_HEAD *pQHead, /* queue head of queue to call routine for */ FUNCPTR routine, /* the routine to call for each queue node */ int routineArg /* arbitrary user-supplied argument */ ) { return (Q_EACH (pQHead, routine, routineArg)); }
/*lint --e{533 } */ STATUS osl_waitqueue_wakeup ( wait_queue_head_t semId /* semaphore ID to give */ ) { #ifndef _WRS_CONFIG_SMP int level; #endif /* !_WRS_CONFIG_SMP */ Q_NODE * pQNode = NULL; #ifdef _WRS_CONFIG_SMP /* lock has been taken in the case of ISR before here */ if (!_WRS_INT_CONTEXT ()) #endif /* _WRS_CONFIG_SMP */ OBJ_LOCK (semClassId, level); if (OBJ_VERIFY (semId, semClassId) != OK) { OBJ_UNLOCK (semClassId, level); return (ERROR); } pQNode = Q_EACH(&semId->qHead, semQueueEventCheck, TRUE); if (pQNode == NULL) { OBJ_UNLOCK (semClassId, level);/*lint !e2 */ return (OK); } else { /*lint -save -e10*/ KERNEL_LOCK_OBJ_UNLOCK (semClassId, level);/*lint !e2 */ /*lint -restore +e10*/ /*lint -save -e722*/ #ifdef _WRS_CONFIG_SV_INSTRUMENTATION /* system viewer - level 2 event logging */ EVT_TASK_1 (EVENT_OBJ_SEMGIVE, semId);/*lint !e681 */ #endif /* _WRS_CONFIG_SV_INSTRUMENTATION */ /*lint -restore +e722*/ semQueuePendQGet(&semId->qHead, pQNode); /* unblock a task */ KERNEL_UNLOCK (); return (OK); } }
STATUS msgQInfoGet( MSG_Q_ID msgQId, MSG_Q_INFO *pInfo ) { STATUS status; int level; Q_HEAD *pendQ; /* Lock interrupts */ INT_LOCK(level); /* Verify object class */ if (OBJ_VERIFY(msgQId, msgQClassId) != OK) { INT_UNLOCK(level); status = ERROR; } else { /* If no messages */ if (msgQId->msgQ.count == 0) { pendQ = &msgQId->msgQ.pendQ; } else { pendQ = &msgQId->freeQ.pendQ; } /* If task id list requested */ if (pInfo->taskIdList != NULL) { Q_INFO(pendQ, pInfo->taskIdList, pInfo->taskIdListMax); } /* If message list or number requested */ if ((pInfo->msgPtrList != NULL) || (pInfo->msgLengthList != NULL)) { pInfo->numMsg = 0; if (pInfo->msgListMax > 0) { Q_EACH(&msgQId->msgQ, msgQInfoEach, pInfo); } } /* Setup info structure */ pInfo->numMsg = msgQId->msgQ.count; pInfo->numTask = Q_INFO(pendQ, NULL, 0); pInfo->options = msgQId->options; pInfo->maxMsg = msgQId->maxMsg; pInfo->maxMsgLength = msgQId->maxMsgLength; pInfo->sendTimeouts = msgQId->sendTimeouts; pInfo->reciveTimeouts = msgQId->reciveTimeouts; /* Unlock interrupts */ INT_UNLOCK(level); status = OK; } return status; }