/* * ======== 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); }
/* * ======== FreeChirpList ======== * Purpose: * Free the queue of Chirps. */ static void FreeChirpList(struct LST_LIST *pChirpList) { DBC_Require(pChirpList != NULL); while (!LST_IsEmpty(pChirpList)) MEM_Free(LST_GetHead(pChirpList)); LST_Delete(pChirpList); }
/* * ======== FreeMsgList ======== */ static void FreeMsgList(struct LST_LIST *msgList) { struct MSG_FRAME *pMsg; if (!msgList) goto func_end; while ((pMsg = (struct MSG_FRAME *)LST_GetHead(msgList)) != NULL) MEM_Free(pMsg); DBC_Assert(LST_IsEmpty(msgList)); LST_Delete(msgList); func_end: return; }
/* * ======== RMM_delete ======== */ void RMM_delete(struct RMM_TargetObj *target) { struct RMM_OvlySect *pSect; struct RMM_Header *hptr; struct RMM_Header *next; u32 i; DBC_Require(MEM_IsValidHandle(target, RMM_TARGSIGNATURE)); GT_1trace(RMM_debugMask, GT_ENTER, "RMM_delete(0x%lx)\n", target); if (target->segTab != NULL) MEM_Free(target->segTab); if (target->ovlyList) { while ((pSect = (struct RMM_OvlySect *)LST_GetHead (target->ovlyList))) { MEM_Free(pSect); } DBC_Assert(LST_IsEmpty(target->ovlyList)); LST_Delete(target->ovlyList); } if (target->freeList != NULL) { /* Free elements on freelist */ for (i = 0; i < target->numSegs; i++) { hptr = next = target->freeList[i]; while (next) { hptr = next; next = hptr->next; MEM_Free(hptr); } } MEM_Free(target->freeList); } MEM_FreeObject(target); }