summaryrefslogtreecommitdiffstats
path: root/pvr-source/services4/srvkm/env/linux/pdump.c
diff options
context:
space:
mode:
Diffstat (limited to 'pvr-source/services4/srvkm/env/linux/pdump.c')
-rwxr-xr-xpvr-source/services4/srvkm/env/linux/pdump.c804
1 files changed, 0 insertions, 804 deletions
diff --git a/pvr-source/services4/srvkm/env/linux/pdump.c b/pvr-source/services4/srvkm/env/linux/pdump.c
deleted file mode 100755
index 0124737..0000000
--- a/pvr-source/services4/srvkm/env/linux/pdump.c
+++ /dev/null
@@ -1,804 +0,0 @@
-/*************************************************************************/ /*!
-@Title Parameter dump macro target routines
-@Copyright Copyright (c) Imagination Technologies Ltd. All Rights Reserved
-@License Dual MIT/GPLv2
-
-The contents of this file are subject to the MIT license as set out below.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-Alternatively, the contents of this file may be used under the terms of
-the GNU General Public License Version 2 ("GPL") in which case the provisions
-of GPL are applicable instead of those above.
-
-If you wish to allow use of your version of this file only under the terms of
-GPL, and not to allow others to use your version of this file under the terms
-of the MIT license, indicate your decision by deleting the provisions above
-and replace them with the notice and other provisions required by GPL as set
-out in the file called "GPL-COPYING" included in this distribution. If you do
-not delete the provisions above, a recipient may use your version of this file
-under the terms of either the MIT license or GPL.
-
-This License is also included in this distribution in the file called
-"MIT-COPYING".
-
-EXCEPT AS OTHERWISE STATED IN A NEGOTIATED AGREEMENT: (A) THE SOFTWARE IS
-PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
-BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
-PURPOSE AND NONINFRINGEMENT; AND (B) IN NO EVENT SHALL THE AUTHORS OR
-COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
-IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-*/ /**************************************************************************/
-
-#if defined (SUPPORT_SGX) || defined (SUPPORT_VGX)
-#if defined (PDUMP)
-
-#include <asm/atomic.h>
-#include <stdarg.h>
-#if defined (SUPPORT_SGX)
-#include "sgxdefs.h" /* Is this still needed? */
-#endif
-#include "services_headers.h"
-
-#include "pvrversion.h"
-#include "pvr_debug.h"
-
-#include "dbgdrvif.h"
-#if defined (SUPPORT_SGX)
-#include "sgxmmu.h"/* Is this still needed? */
-#endif
-#include "mm.h"
-#include "pdump_km.h"
-#include "pdump_int.h"
-
-#include <linux/kernel.h> // sprintf
-#include <linux/string.h> // strncpy, strlen
-
-static IMG_BOOL PDumpWriteString2 (IMG_CHAR * pszString, IMG_UINT32 ui32Flags);
-static IMG_BOOL PDumpWriteILock (PDBG_STREAM psStream, IMG_UINT8 *pui8Data, IMG_UINT32 ui32Count, IMG_UINT32 ui32Flags);
-static IMG_VOID DbgSetFrame (PDBG_STREAM psStream, IMG_UINT32 ui32Frame);
-static IMG_VOID DbgSetMarker (PDBG_STREAM psStream, IMG_UINT32 ui32Marker);
-
-#define PDUMP_DATAMASTER_PIXEL (1)
-#define PDUMP_DATAMASTER_EDM (3)
-
-/*
- Maximum file size to split output files
-*/
-#define MAX_FILE_SIZE 0x40000000
-
-static atomic_t gsPDumpSuspended = ATOMIC_INIT(0);
-
-static PDBGKM_SERVICE_TABLE gpfnDbgDrv = IMG_NULL;
-
-
-
-IMG_CHAR *pszStreamName[PDUMP_NUM_STREAMS] = { "ParamStream2",
- "ScriptStream2",
- "DriverInfoStream"};
-typedef struct PDBG_PDUMP_STATE_TAG
-{
- PDBG_STREAM psStream[PDUMP_NUM_STREAMS];
- IMG_UINT32 ui32ParamFileNum;
-
- IMG_CHAR *pszMsg;
- IMG_CHAR *pszScript;
- IMG_CHAR *pszFile;
-
-} PDBG_PDUMP_STATE;
-
-static PDBG_PDUMP_STATE gsDBGPdumpState = {{IMG_NULL}, 0, IMG_NULL, IMG_NULL, IMG_NULL};
-
-#define SZ_MSG_SIZE_MAX PVRSRV_PDUMP_MAX_COMMENT_SIZE-1
-#define SZ_SCRIPT_SIZE_MAX PVRSRV_PDUMP_MAX_COMMENT_SIZE-1
-#define SZ_FILENAME_SIZE_MAX PVRSRV_PDUMP_MAX_COMMENT_SIZE-1
-
-
-
-
-static inline IMG_BOOL PDumpSuspended(IMG_VOID)
-{
- return (atomic_read(&gsPDumpSuspended) != 0) ? IMG_TRUE : IMG_FALSE;
-}
-
-/*!
- * \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;
-}
-
-/*!
- * \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 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 PDumpOSWriteString2
- */
-IMG_BOOL PDumpOSWriteString2(IMG_HANDLE hScript, IMG_UINT32 ui32Flags)
-{
- return PDumpWriteString2(hScript, ui32Flags);
-}
-
-/*!
- * \name PDumpOSBufprintf
- */
-PVRSRV_ERROR PDumpOSBufprintf(IMG_HANDLE hBuf, IMG_UINT32 ui32ScriptSizeMax, IMG_CHAR* pszFormat, ...)
-{
- IMG_CHAR* pszBuf = hBuf;
- IMG_INT32 n;
- va_list vaArgs;
-
- va_start(vaArgs, pszFormat);
-
- n = vsnprintf(pszBuf, ui32ScriptSizeMax, pszFormat, vaArgs);
-
- va_end(vaArgs);
-
- if (n>=(IMG_INT32)ui32ScriptSizeMax || n==-1) /* glibc >= 2.1 or glibc 2.0 */
- {
- PVR_DPF((PVR_DBG_ERROR, "Buffer overflow detected, pdump output may be incomplete."));
-
- return PVRSRV_ERROR_PDUMP_BUF_OVERFLOW;
- }
-
-#if defined(PDUMP_DEBUG_OUTFILES)
- g_ui32EveryLineCounter++;
-#endif
- return PVRSRV_OK;
-}
-
-/*!
- * \name PDumpOSVSprintf
- */
-PVRSRV_ERROR PDumpOSVSprintf(IMG_CHAR *pszComment, IMG_UINT32 ui32ScriptSizeMax, IMG_CHAR* pszFormat, PDUMP_va_list vaArgs)
-{
- IMG_INT32 n;
-
- n = vsnprintf(pszComment, ui32ScriptSizeMax, pszFormat, vaArgs);
-
- if (n>=(IMG_INT32)ui32ScriptSizeMax || n==-1) /* glibc >= 2.1 or glibc 2.0 */
- {
- PVR_DPF((PVR_DBG_ERROR, "Buffer overflow detected, pdump output may be incomplete."));
-
- return PVRSRV_ERROR_PDUMP_BUF_OVERFLOW;
- }
-
- return PVRSRV_OK;
-}
-
-/*!
- * \name PDumpOSDebugPrintf
- */
-IMG_VOID PDumpOSDebugPrintf(IMG_CHAR* pszFormat, ...)
-{
- PVR_UNREFERENCED_PARAMETER(pszFormat);
-
- /* FIXME: Implement using services PVR_DBG or otherwise with kprintf */
-}
-
-/*!
- * \name PDumpOSSprintf
- */
-PVRSRV_ERROR PDumpOSSprintf(IMG_CHAR *pszComment, IMG_UINT32 ui32ScriptSizeMax, IMG_CHAR *pszFormat, ...)
-{
- IMG_INT32 n;
- va_list vaArgs;
-
- va_start(vaArgs, pszFormat);
-
- n = vsnprintf(pszComment, ui32ScriptSizeMax, pszFormat, vaArgs);
-
- va_end(vaArgs);
-
- if (n>=(IMG_INT32)ui32ScriptSizeMax || n==-1) /* glibc >= 2.1 or glibc 2.0 */
- {
- PVR_DPF((PVR_DBG_ERROR, "Buffer overflow detected, pdump output may be incomplete."));
-
- return PVRSRV_ERROR_PDUMP_BUF_OVERFLOW;
- }
-
- return PVRSRV_OK;
-}
-
-/*!
- * \name PDumpOSBuflen
- */
-IMG_UINT32 PDumpOSBuflen(IMG_HANDLE hBuffer, IMG_UINT32 ui32BufferSizeMax)
-{
- IMG_CHAR* pszBuf = hBuffer;
- IMG_UINT32 ui32Count = 0;
-
- while ((pszBuf[ui32Count]!=0) && (ui32Count<ui32BufferSizeMax) )
- {
- ui32Count++;
- }
- return(ui32Count);
-}
-
-/*!
- * \name PDumpOSVerifyLineEnding
- */
-IMG_VOID PDumpOSVerifyLineEnding(IMG_HANDLE hBuffer, IMG_UINT32 ui32BufferSizeMax)
-{
- IMG_UINT32 ui32Count;
- IMG_CHAR* pszBuf = hBuffer;
-
- /* strlen */
- ui32Count = PDumpOSBuflen(hBuffer, ui32BufferSizeMax);
-
- /* Put \r \n sequence at the end if it isn't already there */
- if ((ui32Count >= 1) && (pszBuf[ui32Count-1] != '\n') && (ui32Count<ui32BufferSizeMax))
- {
- pszBuf[ui32Count] = '\n';
- ui32Count++;
- pszBuf[ui32Count] = '\0';
- }
- if ((ui32Count >= 2) && (pszBuf[ui32Count-2] != '\r') && (ui32Count<ui32BufferSizeMax))
- {
- pszBuf[ui32Count-1] = '\r';
- pszBuf[ui32Count] = '\n';
- ui32Count++;
- pszBuf[ui32Count] = '\0';
- }
-}
-
-/*!
- * \name PDumpOSGetStream
- */
-IMG_HANDLE PDumpOSGetStream(IMG_UINT32 ePDumpStream)
-{
- return (IMG_HANDLE)gsDBGPdumpState.psStream[ePDumpStream];
-}
-
-/*!
- * \name PDumpOSGetStreamOffset
- */
-IMG_UINT32 PDumpOSGetStreamOffset(IMG_UINT32 ePDumpStream)
-{
- PDBG_STREAM psStream = gsDBGPdumpState.psStream[ePDumpStream];
- return gpfnDbgDrv->pfnGetStreamOffset(psStream);
-}
-
-/*!
- * \name PDumpOSGetParamFileNum
- */
-IMG_UINT32 PDumpOSGetParamFileNum(IMG_VOID)
-{
- return gsDBGPdumpState.ui32ParamFileNum;
-}
-
-/*!
- * \name PDumpOSWriteString
- */
-IMG_BOOL PDumpOSWriteString(IMG_HANDLE hStream,
- IMG_UINT8 *psui8Data,
- IMG_UINT32 ui32Size,
- IMG_UINT32 ui32Flags)
-{
- PDBG_STREAM psStream = (PDBG_STREAM)hStream;
- return PDumpWriteILock(psStream,
- psui8Data,
- ui32Size,
- ui32Flags);
-}
-
-/*!
- * \name PDumpOSCheckForSplitting
- */
-IMG_VOID PDumpOSCheckForSplitting(IMG_HANDLE hStream, IMG_UINT32 ui32Size, IMG_UINT32 ui32Flags)
-{
- /* File size limit not implemented for this OS.
- */
- PVR_UNREFERENCED_PARAMETER(hStream);
- PVR_UNREFERENCED_PARAMETER(ui32Size);
- PVR_UNREFERENCED_PARAMETER(ui32Flags);
-}
-
-/*!
- * \name PDumpOSJTInitialised
- */
-IMG_BOOL PDumpOSJTInitialised(IMG_VOID)
-{
- if(gpfnDbgDrv)
- {
- return IMG_TRUE;
- }
- return IMG_FALSE;
-}
-
-/*!
- * \name PDumpOSIsSuspended
- */
-inline IMG_BOOL PDumpOSIsSuspended(IMG_VOID)
-{
- return (atomic_read(&gsPDumpSuspended) != 0) ? IMG_TRUE : IMG_FALSE;
-}
-
-/*!
- * \name PDumpOSCPUVAddrToDevPAddr
- */
-IMG_VOID PDumpOSCPUVAddrToDevPAddr(PVRSRV_DEVICE_TYPE eDeviceType,
- IMG_HANDLE hOSMemHandle,
- IMG_UINT32 ui32Offset,
- IMG_UINT8 *pui8LinAddr,
- IMG_UINT32 ui32PageSize,
- IMG_DEV_PHYADDR *psDevPAddr)
-{
- IMG_CPU_PHYADDR sCpuPAddr;
-
- PVR_UNREFERENCED_PARAMETER(pui8LinAddr);
- PVR_UNREFERENCED_PARAMETER(ui32PageSize); /* for when no assert */
-
- /* Caller must now alway supply hOSMemHandle, even though we only (presently)
- use it here in the linux implementation */
-
- PVR_ASSERT (hOSMemHandle != IMG_NULL);
-
- sCpuPAddr = OSMemHandleToCpuPAddr(hOSMemHandle, ui32Offset);
- PVR_ASSERT((sCpuPAddr.uiAddr & (ui32PageSize - 1)) == 0);
-
- /* convert CPU physical addr to device physical */
- *psDevPAddr = SysCpuPAddrToDevPAddr(eDeviceType, sCpuPAddr);
-}
-
-/*!
- * \name PDumpOSCPUVAddrToPhysPages
- */
-IMG_VOID PDumpOSCPUVAddrToPhysPages(IMG_HANDLE hOSMemHandle,
- IMG_UINT32 ui32Offset,
- IMG_PUINT8 pui8LinAddr,
- IMG_UINT32 ui32DataPageMask,
- IMG_UINT32 *pui32PageOffset)
-{
- if(hOSMemHandle)
- {
- /*
- * If a Services memory handle is provided then use it.
- */
- IMG_CPU_PHYADDR sCpuPAddr;
-
- PVR_UNREFERENCED_PARAMETER(pui8LinAddr);
-
- sCpuPAddr = OSMemHandleToCpuPAddr(hOSMemHandle, ui32Offset);
- *pui32PageOffset = sCpuPAddr.uiAddr & ui32DataPageMask;
- }
- else
- {
- PVR_UNREFERENCED_PARAMETER(hOSMemHandle);
- PVR_UNREFERENCED_PARAMETER(ui32Offset);
-
- *pui32PageOffset = ((IMG_UINT32)pui8LinAddr & ui32DataPageMask);
- }
-}
-
-/*!
- * \name PDumpOSDebugDriverWrite
- */
-IMG_UINT32 PDumpOSDebugDriverWrite( PDBG_STREAM psStream,
- PDUMP_DDWMODE eDbgDrvWriteMode,
- IMG_UINT8 *pui8Data,
- IMG_UINT32 ui32BCount,
- IMG_UINT32 ui32Level,
- IMG_UINT32 ui32DbgDrvFlags)
-{
- switch(eDbgDrvWriteMode)
- {
- case PDUMP_WRITE_MODE_CONTINUOUS:
- PVR_UNREFERENCED_PARAMETER(ui32DbgDrvFlags);
- return gpfnDbgDrv->pfnDBGDrivWrite2(psStream, pui8Data, ui32BCount, ui32Level);
- case PDUMP_WRITE_MODE_LASTFRAME:
- return gpfnDbgDrv->pfnWriteLF(psStream, pui8Data, ui32BCount, ui32Level, ui32DbgDrvFlags);
- case PDUMP_WRITE_MODE_BINCM:
- PVR_UNREFERENCED_PARAMETER(ui32DbgDrvFlags);
- return gpfnDbgDrv->pfnWriteBINCM(psStream, pui8Data, ui32BCount, ui32Level);
- case PDUMP_WRITE_MODE_PERSISTENT:
- PVR_UNREFERENCED_PARAMETER(ui32DbgDrvFlags);
- return gpfnDbgDrv->pfnWritePersist(psStream, pui8Data, ui32BCount, ui32Level);
- default:
- PVR_UNREFERENCED_PARAMETER(ui32DbgDrvFlags);
- break;
- }
- return 0xFFFFFFFFU;
-}
-
-/*!
- * \name PDumpOSReleaseExecution
- */
-IMG_VOID PDumpOSReleaseExecution(IMG_VOID)
-{
- OSReleaseThreadQuanta();
-}
-
-/**************************************************************************
- * Function Name : PDumpInit
- * Outputs : None
- * Returns :
- * Description : Reset connection to vldbgdrv
- * Then try to connect to PDUMP streams
-**************************************************************************/
-IMG_VOID PDumpInit(IMG_VOID)
-{
- IMG_UINT32 i;
- DBGKM_CONNECT_NOTIFIER sConnectNotifier;
-
- /* If we tried this earlier, then we might have connected to the driver
- * But if pdump.exe was running then the stream connected would fail
- */
- if (!gpfnDbgDrv)
- {
- DBGDrvGetServiceTable(&gpfnDbgDrv);
-
-
- // If something failed then no point in trying to connect streams
- if (gpfnDbgDrv == IMG_NULL)
- {
- return;
- }
-
- /*
- * Pass the connection notify callback
- */
- sConnectNotifier.pfnConnectNotifier = &PDumpConnectionNotify;
- gpfnDbgDrv->pfnSetConnectNotifier(sConnectNotifier);
-
- if(!gsDBGPdumpState.pszFile)
- {
- if(OSAllocMem(PVRSRV_OS_PAGEABLE_HEAP, SZ_FILENAME_SIZE_MAX, (IMG_PVOID *)&gsDBGPdumpState.pszFile, 0,
- "Filename string") != PVRSRV_OK)
- {
- goto init_failed;
- }
- }
-
- if(!gsDBGPdumpState.pszMsg)
- {
- if(OSAllocMem(PVRSRV_OS_PAGEABLE_HEAP, SZ_MSG_SIZE_MAX, (IMG_PVOID *)&gsDBGPdumpState.pszMsg, 0,
- "Message string") != PVRSRV_OK)
- {
- goto init_failed;
- }
- }
-
- if(!gsDBGPdumpState.pszScript)
- {
- if(OSAllocMem(PVRSRV_OS_PAGEABLE_HEAP, SZ_SCRIPT_SIZE_MAX, (IMG_PVOID *)&gsDBGPdumpState.pszScript, 0,
- "Script string") != PVRSRV_OK)
- {
- goto init_failed;
- }
- }
-
- for(i=0; i < PDUMP_NUM_STREAMS; i++)
- {
- gsDBGPdumpState.psStream[i] = gpfnDbgDrv->pfnCreateStream(pszStreamName[i],
- DEBUG_CAPMODE_FRAMED,
- DEBUG_OUTMODE_STREAMENABLE,
- 0,
- 10);
-
- gpfnDbgDrv->pfnSetCaptureMode(gsDBGPdumpState.psStream[i],DEBUG_CAPMODE_FRAMED,0xFFFFFFFF, 0xFFFFFFFF, 1);
- gpfnDbgDrv->pfnSetFrame(gsDBGPdumpState.psStream[i],0);
- }
-
- PDUMPCOMMENT("Driver Product Name: %s", VS_PRODUCT_NAME);
- PDUMPCOMMENT("Driver Product Version: %s (%s)", PVRVERSION_STRING, PVRVERSION_FAMILY);
- PDUMPCOMMENT("Start of Init Phase");
- }
-
- return;
-
-init_failed:
-
- if(gsDBGPdumpState.pszFile)
- {
- OSFreeMem(PVRSRV_OS_PAGEABLE_HEAP, SZ_FILENAME_SIZE_MAX, (IMG_PVOID) gsDBGPdumpState.pszFile, 0);
- gsDBGPdumpState.pszFile = IMG_NULL;
- }
-
- if(gsDBGPdumpState.pszScript)
- {
- OSFreeMem(PVRSRV_OS_PAGEABLE_HEAP, SZ_SCRIPT_SIZE_MAX, (IMG_PVOID) gsDBGPdumpState.pszScript, 0);
- gsDBGPdumpState.pszScript = IMG_NULL;
- }
-
- if(gsDBGPdumpState.pszMsg)
- {
- OSFreeMem(PVRSRV_OS_PAGEABLE_HEAP, SZ_MSG_SIZE_MAX, (IMG_PVOID) gsDBGPdumpState.pszMsg, 0);
- gsDBGPdumpState.pszMsg = IMG_NULL;
- }
-
- /*
- * Remove the connection notify callback
- */
- sConnectNotifier.pfnConnectNotifier = 0;
- gpfnDbgDrv->pfnSetConnectNotifier(sConnectNotifier);
-
- gpfnDbgDrv = IMG_NULL;
-}
-
-
-IMG_VOID PDumpDeInit(IMG_VOID)
-{
- IMG_UINT32 i;
- DBGKM_CONNECT_NOTIFIER sConnectNotifier;
-
- for(i=0; i < PDUMP_NUM_STREAMS; i++)
- {
- gpfnDbgDrv->pfnDestroyStream(gsDBGPdumpState.psStream[i]);
- }
-
- if(gsDBGPdumpState.pszFile)
- {
- OSFreeMem(PVRSRV_OS_PAGEABLE_HEAP, SZ_FILENAME_SIZE_MAX, (IMG_PVOID) gsDBGPdumpState.pszFile, 0);
- gsDBGPdumpState.pszFile = IMG_NULL;
- }
-
- if(gsDBGPdumpState.pszScript)
- {
- OSFreeMem(PVRSRV_OS_PAGEABLE_HEAP, SZ_SCRIPT_SIZE_MAX, (IMG_PVOID) gsDBGPdumpState.pszScript, 0);
- gsDBGPdumpState.pszScript = IMG_NULL;
- }
-
- if(gsDBGPdumpState.pszMsg)
- {
- OSFreeMem(PVRSRV_OS_PAGEABLE_HEAP, SZ_MSG_SIZE_MAX, (IMG_PVOID) gsDBGPdumpState.pszMsg, 0);
- gsDBGPdumpState.pszMsg = IMG_NULL;
- }
-
- /*
- * Remove the connection notify callback
- */
- sConnectNotifier.pfnConnectNotifier = 0;
- gpfnDbgDrv->pfnSetConnectNotifier(sConnectNotifier);
-
- gpfnDbgDrv = IMG_NULL;
-}
-
-/**************************************************************************
- * Function Name : PDumpStartInitPhaseKM
- * Inputs : None
- * Outputs : None
- * Returns : None
- * Description : Resume init phase state
-**************************************************************************/
-PVRSRV_ERROR PDumpStartInitPhaseKM(IMG_VOID)
-{
- IMG_UINT32 i;
-
- if (gpfnDbgDrv)
- {
- PDUMPCOMMENT("Start Init Phase");
- for(i=0; i < PDUMP_NUM_STREAMS; i++)
- {
- gpfnDbgDrv->pfnStartInitPhase(gsDBGPdumpState.psStream[i]);
- }
- }
- return PVRSRV_OK;
-}
-
-/**************************************************************************
- * Function Name : PDumpStopInitPhaseKM
- * Inputs : None
- * Outputs : None
- * Returns : None
- * Description : End init phase state
-**************************************************************************/
-PVRSRV_ERROR PDumpStopInitPhaseKM(IMG_VOID)
-{
- IMG_UINT32 i;
-
- if (gpfnDbgDrv)
- {
- PDUMPCOMMENT("Stop Init Phase");
-
- for(i=0; i < PDUMP_NUM_STREAMS; i++)
- {
- gpfnDbgDrv->pfnStopInitPhase(gsDBGPdumpState.psStream[i]);
- }
- }
- return PVRSRV_OK;
-}
-
-/**************************************************************************
- * Function Name : PDumpIsLastCaptureFrameKM
- * Inputs : None
- * Outputs : None
- * Returns : True or false
- * Description : Tests whether the current frame is being pdumped
-**************************************************************************/
-IMG_BOOL PDumpIsLastCaptureFrameKM(IMG_VOID)
-{
- return gpfnDbgDrv->pfnIsLastCaptureFrame(gsDBGPdumpState.psStream[PDUMP_STREAM_SCRIPT2]);
-}
-
-
-/**************************************************************************
- * 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);
-}
-
-/**************************************************************************
- * Function Name : PDumpSetFrameKM
- * Inputs : None
- * Outputs : None
- * Returns : None
- * Description : Sets a frame
-**************************************************************************/
-PVRSRV_ERROR PDumpOSSetFrameKM(IMG_UINT32 ui32Frame)
-{
- IMG_UINT32 ui32Stream;
-
- for (ui32Stream = 0; ui32Stream < PDUMP_NUM_STREAMS; ui32Stream++)
- {
- if (gsDBGPdumpState.psStream[ui32Stream])
- {
- DbgSetFrame(gsDBGPdumpState.psStream[ui32Stream], ui32Frame);
- }
- }
-
- return PVRSRV_OK;
-}
-
-
-/*****************************************************************************
- FUNCTION : PDumpWriteString2
-
- PURPOSE :
-
- PARAMETERS :
-
- RETURNS :
-*****************************************************************************/
-static IMG_BOOL PDumpWriteString2(IMG_CHAR * pszString, IMG_UINT32 ui32Flags)
-{
- return PDumpWriteILock(gsDBGPdumpState.psStream[PDUMP_STREAM_SCRIPT2], (IMG_UINT8 *) pszString, strlen(pszString), ui32Flags);
-}
-
-
-/*****************************************************************************
- FUNCTION : PDumpWriteILock
-
- PURPOSE : Writes, making sure it all goes...
-
- PARAMETERS :
-
- RETURNS :
-*****************************************************************************/
-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;
- }
-
-
- /*
- Set the stream marker to split output files
- */
-
- 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 : DbgSetFrame
-
- PURPOSE : Sets the frame in the stream
-
- PARAMETERS : psStream - Stream pointer
- ui32Frame - Frame number to set
-
- RETURNS : None
-*****************************************************************************/
-static IMG_VOID DbgSetFrame(PDBG_STREAM psStream, IMG_UINT32 ui32Frame)
-{
- gpfnDbgDrv->pfnSetFrame(psStream, ui32Frame);
-}
-
-/*****************************************************************************
- FUNCTION : DbgSetMarker
-
- PURPOSE : Sets the marker of the stream to split output files
-
- PARAMETERS : psStream - Stream pointer
- ui32Marker - Marker number to set
-
- RETURNS : None
-*****************************************************************************/
-static IMG_VOID DbgSetMarker(PDBG_STREAM psStream, IMG_UINT32 ui32Marker)
-{
- gpfnDbgDrv->pfnSetMarker(psStream, ui32Marker);
-}
-
-IMG_VOID PDumpSuspendKM(IMG_VOID)
-{
- atomic_inc(&gsPDumpSuspended);
-}
-
-IMG_VOID PDumpResumeKM(IMG_VOID)
-{
- atomic_dec(&gsPDumpSuspended);
-}
-
-#endif /* #if defined (PDUMP) */
-#endif /* #if defined (SUPPORT_SGX) */
-/*****************************************************************************
- End of file (PDUMP.C)
-*****************************************************************************/