IMG_BOOL PDumpIsCaptureFrameKM(void) { if (PDumpSuspended()) return IMG_FALSE; return pdumpfs_capture_enabled(); }
static IMG_BOOL PDumpWriteILock(PDBG_STREAM psStream, IMG_UINT8 *pui8Data, IMG_UINT32 ui32Count, IMG_UINT32 ui32Flags) { IMG_UINT32 ui32Written = 0; if ((psStream == IMG_NULL) || PDumpSuspended() || ((ui32Flags & PDUMP_FLAGS_NEVER) != 0)) { PVR_DPF((PVR_DBG_MESSAGE, "PDumpWriteILock: Failed to write 0x%x bytes to stream 0x%x", ui32Count, (IMG_UINT32)psStream)); return IMG_TRUE; } if (psStream == gsDBGPdumpState.psStream[PDUMP_STREAM_PARAM2]) { IMG_UINT32 ui32ParamOutPos = gpfnDbgDrv->pfnGetStreamOffset(gsDBGPdumpState.psStream[PDUMP_STREAM_PARAM2]); if (ui32ParamOutPos + ui32Count > MAX_FILE_SIZE) { if ((gsDBGPdumpState.psStream[PDUMP_STREAM_SCRIPT2] && PDumpWriteString2("\r\n-- Splitting pdump output file\r\n\r\n", ui32Flags))) { DbgSetMarker(gsDBGPdumpState.psStream[PDUMP_STREAM_PARAM2], ui32ParamOutPos); gsDBGPdumpState.ui32ParamFileNum++; } } } ui32Written = DbgWrite(psStream, pui8Data, ui32Count, ui32Flags); if (ui32Written == 0xFFFFFFFF) { return IMG_FALSE; } return IMG_TRUE; }
/************************************************************************** * Function Name : PDumpIsCaptureFrameKM * Inputs : None * Outputs : None * Returns : True or false * Description : Tests whether the current frame is being pdumped **************************************************************************/ IMG_BOOL PDumpOSIsCaptureFrameKM(IMG_VOID) { if (PDumpSuspended()) { return IMG_FALSE; } return gpfnDbgDrv->pfnIsCaptureFrame(gsDBGPdumpState.psStream[PDUMP_STREAM_SCRIPT2], IMG_FALSE); }
void PDumpSetFrameKM(u32 ui32PID, u32 ui32Frame) { if (PDumpSuspended()) return; PDumpComment("Ending current Frame\r\n"); pdumpfs_frame_set(ui32PID, ui32Frame); PDumpComment("PID %d: Starting Frame %d\r\n", ui32PID, ui32Frame); }
/*! * \name PDumpOSGetFilenameString */ PVRSRV_ERROR PDumpOSGetFilenameString(IMG_CHAR **ppszFile, IMG_UINT32 *pui32MaxLen) { *ppszFile = gsDBGPdumpState.pszFile; *pui32MaxLen = SZ_FILENAME_SIZE_MAX; if ((!*ppszFile) || PDumpSuspended()) { return PVRSRV_ERROR_PDUMP_NOT_ACTIVE; } return PVRSRV_OK; }
/*! * \name PDumpOSGetMessageString */ PVRSRV_ERROR PDumpOSGetMessageString(IMG_CHAR **ppszMsg, IMG_UINT32 *pui32MaxLen) { *ppszMsg = gsDBGPdumpState.pszMsg; *pui32MaxLen = SZ_MSG_SIZE_MAX; if ((!*ppszMsg) || PDumpSuspended()) { return PVRSRV_ERROR_PDUMP_NOT_ACTIVE; } return PVRSRV_OK; }
/*! * \name PDumpOSGetScriptString */ PVRSRV_ERROR PDumpOSGetScriptString(IMG_HANDLE *phScript, IMG_UINT32 *pui32MaxLen) { *phScript = (IMG_HANDLE)gsDBGPdumpState.pszScript; *pui32MaxLen = SZ_SCRIPT_SIZE_MAX; if ((!*phScript) || PDumpSuspended()) { return PVRSRV_ERROR_PDUMP_NOT_ACTIVE; } return PVRSRV_OK; }
static IMG_BOOL PDumpWriteILock(PDBG_STREAM psStream, IMG_UINT8 *pui8Data, IMG_UINT32 ui32Count, IMG_UINT32 ui32Flags) { IMG_UINT32 ui32Written = 0; IMG_UINT32 ui32Off = 0; if ((psStream == IMG_NULL) || PDumpSuspended() || ((ui32Flags & PDUMP_FLAGS_NEVER) != 0)) { return IMG_TRUE; } if (psStream == gsDBGPdumpState.psStream[PDUMP_STREAM_PARAM2]) { IMG_UINT32 ui32ParamOutPos = gpfnDbgDrv->pfnGetStreamOffset(gsDBGPdumpState.psStream[PDUMP_STREAM_PARAM2]); if (ui32ParamOutPos + ui32Count > MAX_FILE_SIZE) { if ((gsDBGPdumpState.psStream[PDUMP_STREAM_SCRIPT2] && PDumpWriteString2("\r\n-- Splitting pdump output file\r\n\r\n", ui32Flags))) { DbgSetMarker(gsDBGPdumpState.psStream[PDUMP_STREAM_PARAM2], ui32ParamOutPos); gsDBGPdumpState.ui32ParamFileNum++; } } } while (((IMG_UINT32) ui32Count > 0) && (ui32Written != 0xFFFFFFFF)) { ui32Written = DbgWrite(psStream, &pui8Data[ui32Off], ui32Count, ui32Flags); if (ui32Written == 0) { OSReleaseThreadQuanta(); } if (ui32Written != 0xFFFFFFFF) { ui32Off += ui32Written; ui32Count -= ui32Written; } } if (ui32Written == 0xFFFFFFFF) { return IMG_FALSE; } return IMG_TRUE; }
PVRSRV_ERROR PDumpOSGetMessageString(IMG_HANDLE *phMsg, IMG_UINT32 *pui32MaxLen) { *phMsg = (IMG_HANDLE)gsDBGPdumpState.pszMsg; *pui32MaxLen = SZ_MSG_SIZE_MAX; if ((!*phMsg) || PDumpSuspended()) { return PVRSRV_ERROR_GENERIC; } return PVRSRV_OK; }
static void pdump_print(u32 flags, char *format, ...) { va_list ap; if (PDumpSuspended()) return; if (!pdumpfs_flags_check(flags)) return; va_start(ap, format); vsnprintf(gpszScript, SZ_SCRIPT_SIZE_MAX, format, ap); va_end(ap); pdumpfs_write_string(gpszScript); }
static enum PVRSRV_ERROR pdump_dump(u32 flags, void *buffer, u32 size, bool from_user) { enum PVRSRV_ERROR eError; if (PDumpSuspended()) return PVRSRV_OK; if (!pdumpfs_flags_check(flags)) return PVRSRV_OK; pdump_print(flags, "BIN 0x%08X:", size); eError = pdumpfs_write_data(buffer, size, from_user); pdump_print(flags, "-- BIN END\r\n"); return eError; }