@@ -76,8 +76,6 @@ extern DSP_STATUS DRV_ProcRemoveSTRMResElement(HANDLE STRMRes, HANDLE pCtxt);
extern DSP_STATUS DRV_RemoveAllSTRMResElements(HANDLE pCtxt);
-extern DSP_STATUS DRV_ProcDisplayResInfo(u8 *pBuf, u32 *pSize);
-
extern enum NODE_STATE NODE_GetState(HANDLE hNode);
#endif
@@ -639,7 +639,6 @@ u32 MGRWRAP_GetProcessResourcesInfo(union Trapped_Args *args, void *pr_ctxt)
DSP_STATUS status = DSP_SOK;
u32 uSize = 0;
u8 *pBuf = MEM_Alloc(8092, MEM_NONPAGED);
- status = DRV_ProcDisplayResInfo(pBuf, &uSize);
GT_1trace(WCD_debugMask, GT_ENTER,
"MGRWRAP_GetProcessResourcesInfo:uSize=%d :\n", uSize);
cp_to_usr(args->ARGS_PROC_GETTRACE.pBuf, pBuf, status, uSize);
@@ -128,9 +128,6 @@ struct DRV_OBJECT {
u32 dwSignature;
struct LST_LIST *devList;
struct LST_LIST *devNodeString;
-#ifndef RES_CLEANUP_DISABLE
- struct PROCESS_CONTEXT *procCtxtList;
-#endif
};
/*
@@ -156,13 +153,10 @@ static DSP_STATUS RequestBridgeResourcesDSP(u32 dwContext, s32 fRequest);
#ifndef RES_CLEANUP_DISABLE
/* GPP PROCESS CLEANUP CODE */
-static DSP_STATUS PrintProcessInformation(void);
static DSP_STATUS DRV_ProcFreeNodeRes(HANDLE hPCtxt);
static DSP_STATUS DRV_ProcFreeSTRMRes(HANDLE hPCtxt);
extern enum NODE_STATE NODE_GetState(HANDLE hNode);
-/* Get the process context list from driver object */
-
/* Set the Process ID */
DSP_STATUS DRV_ProcSetPID(HANDLE hPCtxt, s32 hProcess)
{
@@ -175,108 +169,6 @@ DSP_STATUS DRV_ProcSetPID(HANDLE hPCtxt, s32 hProcess)
return status;
}
-
-/* Getting the head of the process context list */
-DSP_STATUS DRV_GetProcCtxtList(struct PROCESS_CONTEXT **pPctxt,
- struct DRV_OBJECT *hDrvObject)
-{
- DSP_STATUS status = DSP_SOK;
- struct DRV_OBJECT *pDrvObject = (struct DRV_OBJECT *)hDrvObject;
-
- DBC_Assert(hDrvObject != NULL);
- GT_2trace(curTrace, GT_ENTER,
- "DRV_GetProcCtxtList: 2 *pPctxt:%x, pDrvObject"
- ":%x", *pPctxt, pDrvObject);
- *pPctxt = pDrvObject->procCtxtList;
- GT_2trace(curTrace, GT_ENTER,
- "DRV_GetProcCtxtList: 3 *pPctxt:%x, pDrvObject"
- ":%x", *pPctxt, pDrvObject);
- return status;
-}
-
-/* Add a new process context to process context list */
-DSP_STATUS DRV_InsertProcContext(struct DRV_OBJECT *hDrVObject, HANDLE hPCtxt)
-{
- struct PROCESS_CONTEXT **pCtxt = (struct PROCESS_CONTEXT **)hPCtxt;
- DSP_STATUS status = DSP_SOK;
- struct PROCESS_CONTEXT *pCtxtList = NULL;
- struct DRV_OBJECT *hDRVObject;
-
- GT_0trace(curTrace, GT_ENTER, "\n In DRV_InsertProcContext\n");
-
- status = CFG_GetObject((u32 *)&hDRVObject, REG_DRV_OBJECT);
- DBC_Assert(hDRVObject != NULL);
-
- *pCtxt = MEM_Calloc(1 * sizeof(struct PROCESS_CONTEXT), MEM_PAGED);
- if (!*pCtxt) {
- pr_err("DSP: MEM_Calloc failed in DRV_InsertProcContext\n");
- return DSP_EMEMORY;
- }
-
- spin_lock_init(&(*pCtxt)->proc_list_lock);
- INIT_LIST_HEAD(&(*pCtxt)->processor_list);
-
- GT_0trace(curTrace, GT_ENTER,
- "\n In DRV_InsertProcContext Calling "
- "DRV_GetProcCtxtList\n");
- DRV_GetProcCtxtList(&pCtxtList, hDRVObject);
- GT_0trace(curTrace, GT_ENTER,
- "\n In DRV_InsertProcContext After Calling "
- "DRV_GetProcCtxtList\n");
- if (pCtxtList != NULL) {
- GT_0trace(curTrace, GT_ENTER,
- "\n In DRV_InsertProcContext and pCtxt is "
- "not Null\n");
- while (pCtxtList->next != NULL)
- pCtxtList = pCtxtList->next;
-
- pCtxtList->next = *pCtxt;
- } else {
- GT_0trace(curTrace, GT_ENTER,
- "\n In DRV_InsertProcContext and "
- "pCtxt is Null\n");
- hDRVObject->procCtxtList = *pCtxt;
- }
- return status;
-}
-
-/* Delete a process context from process resource context list */
-DSP_STATUS DRV_RemoveProcContext(struct DRV_OBJECT *hDRVObject,
- HANDLE pr_ctxt)
-{
- DSP_STATUS status = DSP_SOK;
- struct PROCESS_CONTEXT *pr_ctxt_list = NULL;
- struct PROCESS_CONTEXT *ptr_prev;
-
- DBC_Assert(hDRVObject != NULL);
-
- GT_0trace(curTrace, GT_ENTER, "DRV_RemoveProcContext: 12");
- DRV_GetProcCtxtList(&pr_ctxt_list, hDRVObject);
- ptr_prev = pr_ctxt_list;
-
- GT_0trace(curTrace, GT_ENTER, "DRV_RemoveProcContext: 13");
- while (pr_ctxt_list && (pr_ctxt_list != pr_ctxt)) {
- ptr_prev = pr_ctxt_list;
- pr_ctxt_list = pr_ctxt_list->next;
- GT_0trace(curTrace, GT_ENTER,
- "DRV_RemoveProcContext: 2");
- }
-
- GT_0trace(curTrace, GT_ENTER, "DRV_RemoveProcContext: 3");
-
- if (!pr_ctxt_list)
- return DSP_ENOTFOUND;
- else if (hDRVObject->procCtxtList == pr_ctxt_list)
- hDRVObject->procCtxtList = pr_ctxt_list->next;
- else
- ptr_prev->next = pr_ctxt_list->next;
-
- MEM_Free(pr_ctxt);
- GT_0trace(curTrace, GT_ENTER, "DRV_RemoveProcContext: 7");
-
- return status;
-}
-
/* Update the state of process context */
DSP_STATUS DRV_ProcUpdatestate(HANDLE hPCtxt, enum GPP_PROC_RES_STATE status)
{
@@ -439,8 +331,6 @@ DSP_STATUS DRV_InsertDMMResElement(HANDLE hDMMRes, HANDLE hPCtxt)
return status;
}
-
-
/* Release DMM resource element context
* This is called from Proc_UnMap. after the actual resource is freed */
DSP_STATUS DRV_RemoveDMMResElement(HANDLE hDMMRes, HANDLE hPCtxt)
@@ -517,7 +407,6 @@ DSP_STATUS DRV_ProcFreeDMMRes(HANDLE hPCtxt)
return status;
}
-
/* Release all DMM resources and its context
* This is called from .bridge_release. */
DSP_STATUS DRV_RemoveAllDMMResElements(HANDLE hPCtxt)
@@ -605,7 +494,6 @@ DSP_STATUS DRV_RemoveAllNodeResElements(HANDLE hPCtxt)
}
/* Getting the node resource element */
-
DSP_STATUS DRV_GetNodeResElement(HANDLE hNode, HANDLE hNodeRes, HANDLE hPCtxt)
{
struct NODE_RES_OBJECT **nodeRes = (struct NODE_RES_OBJECT **)hNodeRes;
@@ -629,8 +517,6 @@ DSP_STATUS DRV_GetNodeResElement(HANDLE hNode, HANDLE hNodeRes, HANDLE hPCtxt)
return status;
}
-
-
/* Allocate the STRM resource element
* This is called after the actual resource is allocated
*/
@@ -668,8 +554,6 @@ DSP_STATUS DRV_ProcInsertSTRMResElement(HANDLE hStreamHandle, HANDLE hSTRMRes,
return status;
}
-
-
/* Release Stream resource element context
* This function called after the actual resource is freed
*/
@@ -698,7 +582,6 @@ DSP_STATUS DRV_ProcRemoveSTRMResElement(HANDLE hSTRMRes, HANDLE hPCtxt)
return status;
}
-
/* Actual Stream De-Allocation */
static DSP_STATUS DRV_ProcFreeSTRMRes(HANDLE hPCtxt)
{
@@ -764,7 +647,6 @@ DSP_STATUS DRV_RemoveAllSTRMResElements(HANDLE hPCtxt)
return status;
}
-
/* Getting the stream resource element */
DSP_STATUS DRV_GetSTRMResElement(HANDLE hStrm, HANDLE hSTRMRes, HANDLE hPCtxt)
{
@@ -802,270 +684,6 @@ DSP_STATUS DRV_ProcUpdateSTRMRes(u32 uNumBufs, HANDLE hSTRMRes, HANDLE hPCtxt)
return status;
}
-/* Displaying the resources allocated by a process */
-DSP_STATUS DRV_ProcDisplayResInfo(u8 *pBuf1, u32 *pSize)
-{
- struct PROCESS_CONTEXT *pCtxt = NULL;
- struct NODE_RES_OBJECT *pNodeRes = NULL;
- struct DMM_RES_OBJECT *pDMMRes = NULL;
- struct STRM_RES_OBJECT *pSTRMRes = NULL;
- struct DSPHEAP_RES_OBJECT *pDSPHEAPRes = NULL;
- u32 tempCount = 1;
- HANDLE hDrvObject = NULL;
- void *pBuf = pBuf1;
- u8 pTempBuf[250];
- u32 tempStrLen = 0, tempStrLen2 = 0;
- DSP_STATUS status = DSP_SOK;
-
- CFG_GetObject((u32 *)&hDrvObject, REG_DRV_OBJECT);
- DRV_GetProcCtxtList(&pCtxt, (struct DRV_OBJECT *)hDrvObject);
- GT_0trace(curTrace, GT_ENTER, "*********************"
- "DRV_ProcDisplayResourceInfo:*\n");
- while (pCtxt != NULL) {
- tempStrLen2 = sprintf((char *)pTempBuf,
- "-------------------------------------"
- "-----------------------------------\n");
- tempStrLen2 += 2;
- memmove(pBuf+tempStrLen, pTempBuf, tempStrLen2);
- tempStrLen += tempStrLen2;
- if (pCtxt->resState == PROC_RES_ALLOCATED) {
- tempStrLen2 = sprintf((char *)pTempBuf,
- "GPP Process Resource State: "
- "pCtxt->resState = PROC_RES_ALLOCATED, "
- " Process ID: %d\n", pCtxt->pid);
- tempStrLen2 += 2;
- memmove(pBuf+tempStrLen, pTempBuf, tempStrLen2);
- tempStrLen += tempStrLen2;
- } else {
- tempStrLen2 = sprintf((char *)pTempBuf,
- "GPP Resource State: pCtxt->resState"
- " = PROC_RES_DEALLOCATED, Process ID:%d\n",
- pCtxt->pid);
- tempStrLen2 += 2;
- memmove(pBuf+tempStrLen, pTempBuf, tempStrLen2);
- tempStrLen += tempStrLen2;
- }
- pNodeRes = pCtxt->pNodeList;
- tempCount = 1;
- while (pNodeRes != NULL) {
- GT_2trace(curTrace, GT_ENTER,
- "DRV_ProcDisplayResourceInfo: #:%d "
- "pCtxt->pNodeList->hNode:%x\n",
- tempCount, pNodeRes->hNode);
- tempStrLen2 = sprintf((char *)pTempBuf,
- "Node Resource Information: Node #"
- " %d Node Handle hNode:0X%x\n",
- tempCount, (u32)pNodeRes->hNode);
- pNodeRes = pNodeRes->next;
- tempStrLen2 += 2;
- memmove(pBuf+tempStrLen, pTempBuf, tempStrLen2);
- tempStrLen += tempStrLen2;
- tempCount++;
- }
- tempCount = 1;
- pDSPHEAPRes = pCtxt->pDSPHEAPList;
- while (pDSPHEAPRes != NULL) {
- GT_2trace(curTrace, GT_ENTER,
- "DRV_ProcDisplayResourceInfo: #:%d "
- "pCtxt->pDSPHEAPRList->ulMpuAddr:%x\n",
- tempCount, pDSPHEAPRes->ulMpuAddr);
- tempStrLen2 = sprintf((char *)pTempBuf,
- "DSP Heap Resource Info: HEAP # %d"
- " Mapped GPP Address: 0x%x, size: 0x%x\n",
- tempCount, (u32)pDSPHEAPRes->ulMpuAddr,
- (u32)pDSPHEAPRes->heapSize);
- pDSPHEAPRes = pDSPHEAPRes->next;
- tempStrLen2 += 2;
- memmove(pBuf+tempStrLen, pTempBuf, tempStrLen2);
- tempStrLen += tempStrLen2;
- tempCount++;
- }
- tempCount = 1;
- pDMMRes = pCtxt->pDMMList;
- while (pDMMRes != NULL) {
- GT_2trace(curTrace, GT_ENTER,
- "DRV_ProcDisplayResourceInfo: #:%d "
- " pCtxt->pDMMList->ulMpuAddr:%x\n",
- tempCount,
- pDMMRes->ulMpuAddr);
- tempStrLen2 = sprintf((char *)pTempBuf,
- "DMM Resource Info: DMM # %d Mapped"
- " GPP Address: 0x%x, size: 0x%x\n",
- tempCount, (u32)pDMMRes->ulMpuAddr,
- (u32)pDMMRes->dmmSize);
- pDMMRes = pDMMRes->next;
- tempStrLen2 += 2;
- memmove(pBuf+tempStrLen, pTempBuf, tempStrLen2);
- tempStrLen += tempStrLen2;
- tempCount++;
- }
- tempCount = 1;
- pSTRMRes = pCtxt->pSTRMList;
- while (pSTRMRes != NULL) {
- GT_2trace(curTrace, GT_ENTER,
- "DRV_ProcDisplayResourceInfo: #:%d "
- "pCtxt->pSTRMList->hStream:%x\n", tempCount,
- pSTRMRes->hStream);
- tempStrLen2 = sprintf((char *)pTempBuf,
- "Stream Resource info: STRM # %d "
- "Stream Handle: 0x%x \n",
- tempCount, (u32)pSTRMRes->hStream);
- pSTRMRes = pSTRMRes->next;
- tempStrLen2 += 2;
- memmove(pBuf+tempStrLen, pTempBuf, tempStrLen2);
- tempStrLen += tempStrLen2;
- tempCount++;
- }
- pCtxt = pCtxt->next;
- }
- *pSize = tempStrLen;
- status = PrintProcessInformation();
- GT_0trace(curTrace, GT_ENTER, "*********************"
- "DRV_ProcDisplayResourceInfo:**\n");
- return status;
-}
-
-/*
- * ======== PrintProcessInformation ========
- * Purpose:
- * This function prints the Process's information stored in
- * the process context list. Some of the information that
- * it displays is Process's state, Node, Stream, DMM, and
- * Heap information.
- */
-static DSP_STATUS PrintProcessInformation(void)
-{
- struct DRV_OBJECT *hDrvObject = NULL;
- struct PROCESS_CONTEXT *pCtxtList = NULL;
- struct NODE_RES_OBJECT *pNodeRes = NULL;
- struct DMM_RES_OBJECT *pDMMRes = NULL;
- struct PROC_OBJECT *proc_obj_ptr;
- struct STRM_RES_OBJECT *pSTRMRes = NULL;
- struct DSPHEAP_RES_OBJECT *pDSPHEAPRes = NULL;
- DSP_STATUS status = DSP_SOK;
- u32 tempCount;
- u32 procID;
-
- /* Get the Process context list */
- CFG_GetObject((u32 *)&hDrvObject, REG_DRV_OBJECT);
- DRV_GetProcCtxtList(&pCtxtList, hDrvObject);
- GT_0trace(curTrace, GT_4CLASS, "\n### Debug information"
- " for DSP bridge ##\n");
- GT_0trace(curTrace, GT_4CLASS, " \n ###The processes"
- " information is as follows ### \n") ;
- GT_0trace(curTrace, GT_4CLASS, " ====================="
- "============ \n");
- /* Go through the entries in the Process context list */
- while (pCtxtList != NULL) {
- GT_1trace(curTrace, GT_4CLASS, "\nThe process"
- " id is %d\n", pCtxtList->pid);
- GT_0trace(curTrace, GT_4CLASS, " -------------------"
- "---------\n");
- if (pCtxtList->resState == PROC_RES_ALLOCATED) {
- GT_0trace(curTrace, GT_4CLASS, " \nThe Process"
- " is in Allocated state\n");
- } else {
- GT_0trace(curTrace, GT_4CLASS, "\nThe Process"
- " is in DeAllocated state\n");
- }
-
- spin_lock(&pCtxtList->proc_list_lock);
- list_for_each_entry(proc_obj_ptr, &pCtxtList->processor_list,
- proc_object) {
- PROC_GetProcessorId(proc_obj_ptr, &procID);
- if (procID == DSP_UNIT) {
- GT_0trace(curTrace, GT_4CLASS,
- "\nProcess connected to"
- " DSP Processor\n");
- } else if (procID == IVA_UNIT) {
- GT_0trace(curTrace, GT_4CLASS,
- "\nProcess connected to"
- " IVA Processor\n");
- } else {
- GT_0trace(curTrace, GT_7CLASS,
- "\n***ERROR:Invalid Processor Id***\n");
- }
- }
- spin_unlock(&pCtxtList->proc_list_lock);
-
- pNodeRes = pCtxtList->pNodeList;
- tempCount = 1;
- while (pNodeRes != NULL) {
- if (tempCount == 1)
- GT_0trace(curTrace, GT_4CLASS,
- "\n***The Nodes allocated by"
- " this Process are***\n");
- GT_2trace(curTrace, GT_4CLASS,
- "Node # %d Node Handle hNode:0x%x\n",
- tempCount, (u32)pNodeRes->hNode);
- pNodeRes = pNodeRes->next;
- tempCount++;
- }
- if (tempCount == 1)
- GT_0trace(curTrace, GT_4CLASS,
- "\n ***There are no Nodes"
- " allocated by this Process***\n");
- tempCount = 1;
- pDSPHEAPRes = pCtxtList->pDSPHEAPList;
- while (pDSPHEAPRes != NULL) {
- if (tempCount == 1)
- GT_0trace(curTrace, GT_4CLASS,
- "\n***The Heaps allocated by"
- " this Process are***\n");
- GT_3trace(curTrace, GT_4CLASS,
- "DSP Heap Resource Info: HEAP # %d "
- "Mapped GPP Address:0x%x, Size: 0x%lx\n",
- tempCount, (u32)pDSPHEAPRes->ulMpuAddr,
- pDSPHEAPRes->heapSize);
- pDSPHEAPRes = pDSPHEAPRes->next;
- tempCount++;
- }
- if (tempCount == 1)
- GT_0trace(curTrace, GT_4CLASS,
- "\n ***There are no Heaps allocated"
- " by this Process***\n");
- tempCount = 1;
- pDMMRes = pCtxtList->pDMMList;
- while (pDMMRes != NULL) {
- if (tempCount == 1)
- GT_0trace(curTrace, GT_4CLASS,
- "\n ***The DMM resources allocated by"
- " this Process are***\n");
- GT_3trace(curTrace, GT_4CLASS,
- "DMM Resource Info: DMM # %d "
- "Mapped GPP Address:0X%lx, Size: 0X%lx\n",
- tempCount, pDMMRes->ulMpuAddr,
- pDMMRes->dmmSize);
- pDMMRes = pDMMRes->next;
- tempCount++;
- }
- if (tempCount == 1)
- GT_0trace(curTrace, GT_4CLASS,
- "\n ***There are no DMM resources"
- " allocated by this Process***\n");
- tempCount = 1;
- pSTRMRes = pCtxtList->pSTRMList;
- while (pSTRMRes != NULL) {
- if (tempCount == 1)
- GT_0trace(curTrace, GT_4CLASS,
- "\n***The Stream resources allocated by"
- " this Process are***\n");
- GT_2trace(curTrace, GT_4CLASS,
- "Stream Resource info: STRM # %d"
- "Stream Handle:0X%x\n", tempCount,
- (u32)pSTRMRes->hStream);
- pSTRMRes = pSTRMRes->next;
- tempCount++;
- }
- if (tempCount == 1)
- GT_0trace(curTrace, GT_4CLASS,
- "\n ***There are no Stream resources"
- "allocated by this Process***\n");
- pCtxtList = pCtxtList->next;
- }
- return status;
-}
-
/* GPP PROCESS CLEANUP CODE END */
#endif
@@ -420,10 +420,7 @@ static int __devexit omap34xx_bridge_remove(struct platform_device *pdev)
dev_t devno;
bool ret;
DSP_STATUS dsp_status = DSP_SOK;
- HANDLE hDrvObject = NULL;
- struct PROCESS_CONTEXT *pTmp = NULL;
- struct PROCESS_CONTEXT *pCtxtclosed = NULL;
- struct PROC_OBJECT *proc_obj_ptr, *temp;
+ HANDLE hDrvObject = NULL;
GT_0trace(driverTrace, GT_ENTER, "-> driver_exit\n");
@@ -441,21 +438,6 @@ static int __devexit omap34xx_bridge_remove(struct platform_device *pdev)
}
#endif /* #ifdef CONFIG_BRIDGE_DVFS */
- DRV_GetProcCtxtList(&pCtxtclosed, (struct DRV_OBJECT *)hDrvObject);
- while (pCtxtclosed != NULL) {
- GT_1trace(driverTrace, GT_5CLASS, "***Cleanup of "
- "process***%d\n", pCtxtclosed->pid);
- DRV_RemoveAllResources(pCtxtclosed);
- list_for_each_entry_safe(proc_obj_ptr, temp,
- &pCtxtclosed->processor_list, proc_object) {
- PROC_Detach(proc_obj_ptr, pCtxtclosed);
- }
- pTmp = pCtxtclosed->next;
- DRV_RemoveProcContext((struct DRV_OBJECT *)hDrvObject,
- pCtxtclosed);
- pCtxtclosed = pTmp;
- }
-
if (driverContext) {
/* Put the DSP in reset state */
ret = DSP_Deinit(driverContext);
@@ -562,8 +544,10 @@ static int bridge_open(struct inode *ip, struct file *filp)
* Allocate a new process context and insert it into global
* process context list.
*/
- DRV_InsertProcContext(hDrvObject, &pr_ctxt);
+ pr_ctxt = MEM_Calloc(sizeof(struct PROCESS_CONTEXT), MEM_PAGED);
if (pr_ctxt) {
+ spin_lock_init(&(pr_ctxt->proc_list_lock));
+ INIT_LIST_HEAD(&(pr_ctxt->processor_list));
DRV_ProcUpdatestate(pr_ctxt, PROC_RES_ALLOCATED);
DRV_ProcSetPID(pr_ctxt, current->tgid);
} else {
@@ -605,8 +589,7 @@ static int bridge_release(struct inode *ip, struct file *filp)
proc_object) {
PROC_Detach(proc_obj_ptr, pr_ctxt);
}
- DRV_RemoveProcContext((struct DRV_OBJECT *)hDrvObject,
- pr_ctxt);
+ MEM_Free(pr_ctxt);
} else {
status = -EIO;
}
@@ -177,47 +177,6 @@ static char **PrependEnvp(char **newEnvp, char **envp, s32 cEnvp, s32 cNewEnvp,
char *szVar);
/*
- * ======== PROC_CleanupAllResources =====
- * Purpose:
- * Funtion to clean the process resources.
- * This function is intended to be called when the
- * processor is in error state
- */
-DSP_STATUS PROC_CleanupAllResources(void)
-{
- DSP_STATUS dsp_status = DSP_SOK;
- HANDLE hDrvObject = NULL;
- struct PROCESS_CONTEXT *pCtxtclosed = NULL;
- struct PROC_OBJECT *proc_obj_ptr, *temp;
-
- GT_0trace(PROC_DebugMask, GT_ENTER, "PROC_CleanupAllResources\n");
-
- dsp_status = CFG_GetObject((u32 *)&hDrvObject, REG_DRV_OBJECT);
- if (DSP_FAILED(dsp_status))
- goto func_end;
-
- DRV_GetProcCtxtList(&pCtxtclosed, (struct DRV_OBJECT *)hDrvObject);
-
- while (pCtxtclosed != NULL) {
- if (current->tgid != pCtxtclosed->pid) {
- GT_1trace(PROC_DebugMask, GT_5CLASS,
- "***Cleanup of "
- "process***%d\n", pCtxtclosed->pid);
- list_for_each_entry_safe(proc_obj_ptr, temp,
- &pCtxtclosed->processor_list,
- proc_object) {
- PROC_Detach(proc_obj_ptr, pCtxtclosed);
- }
- }
- pCtxtclosed = pCtxtclosed->next;
- }
-
- WMD_DEH_ReleaseDummyMem();
-func_end:
- return dsp_status;
-}
-
-/*
* ======== PROC_Attach ========
* Purpose:
* Prepare for communication with a particular DSP processor, and return
@@ -1678,7 +1637,7 @@ DSP_STATUS PROC_Stop(DSP_HPROCESSOR hProcessor)
/* Clean up all the resources except the current running
* process resources */
if (uBrdState == BRD_ERROR)
- PROC_CleanupAllResources();
+ WMD_DEH_ReleaseDummyMem();
}
/* check if there are any running nodes */
status = DEV_GetNodeManager(pProcObject->hDevObject, &hNodeMgr);