/*! ****************************************************************************** @Function PVRSRVTimeTraceBufferDestroy @Description Destroy a trace buffer. Note: We assume that this will only be called once per process. @Input ui32PID : PID of the process that is creating the buffer @Return none ******************************************************************************/ PVRSRV_ERROR PVRSRVTimeTraceBufferDestroy(IMG_UINT32 ui32PID) { #if !defined(TTRACE_KEEP_BUFFER_ON_EXIT) sTimeTraceBuffer *psBuffer; #if defined(DUMP_TTRACE_BUFFERS_ON_EXIT) PVRSRVDumpTimeTraceBuffers(); #endif LinuxLockMutex(&g_sTTraceMutex); psBuffer = (sTimeTraceBuffer *) HASH_Retrieve(g_psBufferTable, (IMG_UINTPTR_T) ui32PID); if (psBuffer) { OSFreeMem(PVRSRV_PAGEABLE_SELECT, sizeof(sTimeTraceBuffer) + TIME_TRACE_BUFFER_SIZE, psBuffer, NULL); HASH_Remove(g_psBufferTable, (IMG_UINTPTR_T) ui32PID); LinuxUnLockMutex(&g_sTTraceMutex); return PVRSRV_OK; } PVR_DPF((PVR_DBG_ERROR, "PVRSRVTimeTraceBufferDestroy: Can't find trace buffer in hash table")); LinuxUnLockMutex(&g_sTTraceMutex); return PVRSRV_ERROR_INVALID_PARAMS; #else return PVRSRV_OK; #endif }
/*! ****************************************************************************** @Function PVRSRVTimeTraceBufferDestroy @Description Destroy a trace buffer. Note: We assume that this will only be called once per process. @Input ui32PID : PID of the process that is creating the buffer @Return none ******************************************************************************/ PVRSRV_ERROR PVRSRVTimeTraceBufferDestroy(IMG_UINT32 ui32PID) { sTimeTraceBuffer *psBuffer; #if defined(DUMP_TTRACE_BUFFERS_ON_EXIT) PVRSRVDumpTimeTraceBuffers(); #endif psBuffer = (sTimeTraceBuffer *) HASH_Retrieve(g_psBufferTable, (IMG_UINTPTR_T) ui32PID); if (psBuffer) { if (psBuffer->pui8Data) OSFreeMem(PVRSRV_PAGEABLE_SELECT, TIME_TRACE_BUFFER_SIZE, psBuffer->pui8Data, NULL); OSFreeMem(PVRSRV_PAGEABLE_SELECT, sizeof(sTimeTraceBuffer), psBuffer, NULL); HASH_Remove(g_psBufferTable, (IMG_UINTPTR_T) ui32PID); return PVRSRV_OK; } PVR_DPF((PVR_DBG_ERROR, "PVRSRVTimeTraceBufferDestroy: Can't find trace buffer in hash table")); return PVRSRV_ERROR_INVALID_PARAMS; }