Exemple #1
0
/*
 *  ======== DeleteMsgMgr ========
 */
static void DeleteMsgMgr(struct MSG_MGR *hMsgMgr)
{
	DBC_Require(MEM_IsValidHandle(hMsgMgr, MSGMGR_SIGNATURE));

	if (hMsgMgr->queueList) {
               if (LST_IsEmpty(hMsgMgr->queueList)) {
                       LST_Delete(hMsgMgr->queueList);
                       hMsgMgr->queueList = NULL;
               }
	}

       if (hMsgMgr->msgFreeList) {
		FreeMsgList(hMsgMgr->msgFreeList);
               hMsgMgr->msgFreeList = NULL;
       }

       if (hMsgMgr->msgUsedList) {
		FreeMsgList(hMsgMgr->msgUsedList);
               hMsgMgr->msgUsedList = NULL;
       }

	if (hMsgMgr->hSyncEvent)
		SYNC_CloseEvent(hMsgMgr->hSyncEvent);

	if (hMsgMgr->hSyncCS)
		SYNC_DeleteCS(hMsgMgr->hSyncCS);

	MEM_FreeObject(hMsgMgr);
}
Exemple #2
0
/*
 *  ======== DeleteMsgQueue ========
 */
static void DeleteMsgQueue(struct MSG_QUEUE *hMsgQueue, u32 uNumToDSP)
{
       struct MSG_MGR *hMsgMgr;
	struct MSG_FRAME *pMsg;
	u32 i;

       if (!MEM_IsValidHandle(hMsgQueue, MSGQ_SIGNATURE)
               || !hMsgQueue->hMsgMgr || !hMsgQueue->hMsgMgr->msgFreeList)
               goto func_end;
       hMsgMgr = hMsgQueue->hMsgMgr;


	/* Pull off uNumToDSP message frames from Msg manager and free */
	for (i = 0; i < uNumToDSP; i++) {

		if (!LST_IsEmpty(hMsgMgr->msgFreeList)) {
			pMsg = (struct MSG_FRAME *)LST_GetHead(hMsgMgr->
				msgFreeList);
			MEM_Free(pMsg);
		} else {
			/* Cannot free all of the message frames */
			break;
		}
	}

       if (hMsgQueue->msgFreeList) {
		FreeMsgList(hMsgQueue->msgFreeList);
               hMsgQueue->msgFreeList = NULL;
       }

       if (hMsgQueue->msgUsedList) {
		FreeMsgList(hMsgQueue->msgUsedList);
               hMsgQueue->msgUsedList = NULL;
       }


	if (hMsgQueue->hNtfy)
		NTFY_Delete(hMsgQueue->hNtfy);

	if (hMsgQueue->hSyncEvent)
		SYNC_CloseEvent(hMsgQueue->hSyncEvent);

	if (hMsgQueue->hSyncDone)
		SYNC_CloseEvent(hMsgQueue->hSyncDone);

	if (hMsgQueue->hSyncDoneAck)
		SYNC_CloseEvent(hMsgQueue->hSyncDoneAck);

	MEM_FreeObject(hMsgQueue);
func_end:
       return;

}
Exemple #3
0
Fichier : util.c Projet : aosm/X11
MsgList CurMsgListOrCurMsg(Toc toc)
{
    MsgList result;
    Msg curmsg;
    result = TocCurMsgList(toc);
    if (result->nummsgs == 0 && (curmsg = TocGetCurMsg(toc))) {
	FreeMsgList(result);
	result = MakeSingleMsgList(curmsg);
    }
    return result;
}