/* * ======== DMM_Create ======== * Purpose: * Create a dynamic memory manager object. */ DSP_STATUS DMM_Create(OUT struct DMM_OBJECT **phDmmMgr, struct DEV_OBJECT *hDevObject, IN CONST struct DMM_MGRATTRS *pMgrAttrs) { struct DMM_OBJECT *pDmmObject = NULL; DSP_STATUS status = DSP_SOK; DBC_Require(cRefs > 0); DBC_Require(phDmmMgr != NULL); GT_3trace(DMM_debugMask, GT_ENTER, "DMM_Create: phDmmMgr: 0x%x hDevObject: " "0x%x pMgrAttrs: 0x%x\n", phDmmMgr, hDevObject, pMgrAttrs); *phDmmMgr = NULL; /* create, zero, and tag a cmm mgr object */ MEM_AllocObject(pDmmObject, struct DMM_OBJECT, DMMSIGNATURE); if (pDmmObject != NULL) { status = SYNC_InitializeCS(&pDmmObject->hDmmLock); if (DSP_SUCCEEDED(status)) *phDmmMgr = pDmmObject; else DMM_Destroy(pDmmObject); } else { GT_0trace(DMM_debugMask, GT_7CLASS, "DMM_Create: Object Allocation " "Failure(DMM Object)\n"); status = DSP_EMEMORY; } GT_2trace(DMM_debugMask, GT_4CLASS, "Leaving DMM_Create status %x pDmmObject %x\n", status, pDmmObject); return status; }
/* * ======== STRM_Create ======== * Purpose: * Create a STRM manager object. */ DSP_STATUS STRM_Create(OUT struct STRM_MGR **phStrmMgr, struct DEV_OBJECT *hDev) { struct STRM_MGR *pStrmMgr; DSP_STATUS status = DSP_SOK; DBC_Require(cRefs > 0); DBC_Require(phStrmMgr != NULL); DBC_Require(hDev != NULL); GT_2trace(STRM_debugMask, GT_ENTER, "STRM_Create: phStrmMgr: " "0x%x\thDev: 0x%x\n", phStrmMgr, hDev); *phStrmMgr = NULL; /* Allocate STRM manager object */ MEM_AllocObject(pStrmMgr, struct STRM_MGR, STRMMGR_SIGNATURE); if (pStrmMgr == NULL) { status = DSP_EMEMORY; GT_0trace(STRM_debugMask, GT_6CLASS, "STRM_Create: " "MEM_AllocObject() failed!\n "); } else { pStrmMgr->hDev = hDev; } /* Get Channel manager and WMD function interface */ if (DSP_SUCCEEDED(status)) { status = DEV_GetChnlMgr(hDev, &(pStrmMgr->hChnlMgr)); if (DSP_SUCCEEDED(status)) { (void) DEV_GetIntfFxns(hDev, &(pStrmMgr->pIntfFxns)); DBC_Assert(pStrmMgr->pIntfFxns != NULL); } else { GT_1trace(STRM_debugMask, GT_6CLASS, "STRM_Create: " "Failed to get channel manager! status = " "0x%x\n", status); } } if (DSP_SUCCEEDED(status)) status = SYNC_InitializeCS(&pStrmMgr->hSync); if (DSP_SUCCEEDED(status)) *phStrmMgr = pStrmMgr; else DeleteStrmMgr(pStrmMgr); DBC_Ensure(DSP_SUCCEEDED(status) && (MEM_IsValidHandle((*phStrmMgr), STRMMGR_SIGNATURE) || (DSP_FAILED(status) && *phStrmMgr == NULL))); return status; }
/* * ======== STRM_Create ======== * Purpose: * Create a STRM manager object. */ DSP_STATUS STRM_Create(OUT struct STRM_MGR **phStrmMgr, struct DEV_OBJECT *hDev) { struct STRM_MGR *pStrmMgr; DSP_STATUS status = DSP_SOK; DBC_Require(cRefs > 0); DBC_Require(phStrmMgr != NULL); DBC_Require(hDev != NULL); *phStrmMgr = NULL; /* Allocate STRM manager object */ MEM_AllocObject(pStrmMgr, struct STRM_MGR, STRMMGR_SIGNATURE); if (pStrmMgr == NULL) status = DSP_EMEMORY; else pStrmMgr->hDev = hDev; /* Get Channel manager and WMD function interface */ if (DSP_SUCCEEDED(status)) { status = DEV_GetChnlMgr(hDev, &(pStrmMgr->hChnlMgr)); if (DSP_SUCCEEDED(status)) { (void) DEV_GetIntfFxns(hDev, &(pStrmMgr->pIntfFxns)); DBC_Assert(pStrmMgr->pIntfFxns != NULL); } } if (DSP_SUCCEEDED(status)) status = SYNC_InitializeCS(&pStrmMgr->hSync); if (DSP_SUCCEEDED(status)) *phStrmMgr = pStrmMgr; else DeleteStrmMgr(pStrmMgr); DBC_Ensure(DSP_SUCCEEDED(status) && (MEM_IsValidHandle((*phStrmMgr), STRMMGR_SIGNATURE) || (DSP_FAILED(status) && *phStrmMgr == NULL))); return status; }