void clMsgQueueFree(ClMsgQueueInfoT *pQInfo) { ClRcT rc = CL_OK; SaNameT qName = {strlen("--Unknow--"), "--Unknow--"}; ClUint32T i; CL_OSAL_MUTEX_LOCK(&pQInfo->qLock); (void)clMsgUnblockThreadsOfQueue(pQInfo); if(pQInfo->unlinkFlag == CL_FALSE && pQInfo->pQueueEntry != NULL) { saNameCopy(&qName, &pQInfo->pQueueEntry->qName); } if(pQInfo->timerHandle != 0) { rc = clTimerDelete(&pQInfo->timerHandle); if(rc != CL_OK) clLogError("QUE", "FREE", "Failed to delete [%.*s]'s timer handle. error code [0x%x].", qName.length, qName.value, rc); } clMsgQueueEmpty(pQInfo); for(i = 0; i < CL_MSG_QUEUE_PRIORITIES ; i++) { rc = clCntDelete(pQInfo->pPriorityContainer[i]); if(rc != CL_OK) clLogError("QUE", "FREE", "Failed to delete the [%.*s]'s [%d] priority container. error code [0x%x].", qName.length, qName.value, i, rc); else pQInfo->pPriorityContainer[i] = 0; } rc = clOsalCondDelete(pQInfo->qCondVar); if(rc != CL_OK) clLogError("QUE", "FREE", "Failed to delete the [%.*s]'s condtional variable. error code [0x%x].", qName.length, qName.value, rc); pQInfo->qCondVar = 0; CL_OSAL_MUTEX_UNLOCK(&pQInfo->qLock); rc = clOsalMutexDestroy(&pQInfo->qLock); if(rc != CL_OK) clLogError("QUE", "FREE", "Failed to delete the [%.*s]'s lock. error code [0x%x].", qName.length, qName.value, rc); clLogDebug("QUE", "FREE", "Freed the queue [%.*s].", qName.length, qName.value); return; }
ClRcT clMsgFinalizeBlockFin(void) { ClRcT rc; rc = clMsgEventFinalize(); if(rc != CL_OK) clLogError("MSG", "BLOCK", "Failed to finalize event library. error code [0x%x].", rc); rc = clOsalMutexDestroy(&gFinBlockMutex); if(rc != CL_OK) clLogError("MSG", "BLOCK", "Failed to delete a mutex. error code [0x%x].", rc); rc = clOsalCondDelete(gFinBlockCond); if(rc != CL_OK) clLogError("MSG", "BLOCK", "Failed to delete a conditional variable. error code [0x%x].", rc); return rc; }
ClRcT clMsgFinalizeBlockInit(void) { ClRcT rc; ClRcT retCode; rc = clOsalCondCreate(&gFinBlockCond); if(rc != CL_OK) { clLogError("FIN", "BLOCK", "Failed to create a condtional variable. error code [0x%x].", rc); goto error_out; } rc = clOsalMutexInit(&gFinBlockMutex); if(rc != CL_OK) { clLogError("FIN", "BLOCK", "Failed to create a mutex. error code [0x%x].", rc); goto error_out_1; } rc = clMsgEventInitTimerStart(); if(rc != CL_OK) { clLogError("FIN", "BLOCK", "Failed to start event initialize timer. error code [0x%x].", rc); goto error_out_2; } goto out; error_out_2: retCode = clOsalMutexDestroy(&gFinBlockMutex); if(retCode != CL_OK) clLogError("MSG", "BLOCK", "Failed to destroy mutex. error code [0x%x].", retCode); error_out_1: retCode = clOsalCondDelete(gFinBlockCond); if(retCode != CL_OK) clLogError("MSG", "BLOCK", "Failed to delete a conditional variable. error code [0x%x].", retCode); error_out: out: return rc; }