static atomic_t gsPDumpSuspended = ATOMIC_INIT(0);
-static char *gpszMsg;
-static char *gpszScript;
-static char *gpszFile;
-
#define PDUMP_STREAM_PARAM2 0
#define PDUMP_STREAM_SCRIPT2 1
#define PDUMP_NUM_STREAMS 2
static struct DBG_STREAM *gpsStream[PDUMP_NUM_STREAMS] = {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)
-
+#define SZ_COMMENT_SIZE_MAX PVRSRV_PDUMP_MAX_COMMENT_SIZE
+#define SZ_SCRIPT_SIZE_MAX (SZ_COMMENT_SIZE_MAX + 5)
+#define SZ_FILENAME_SIZE_MAX SZ_COMMENT_SIZE_MAX
+static char *gpszComment;
+static char *gpszScript;
+static char *gpszFile;
void PDumpSuspendKM(void)
{
return;
va_start(ap, pszFormat);
- vsnprintf(gpszScript, SZ_MSG_SIZE_MAX, pszFormat, ap);
+ vsnprintf(gpszScript, SZ_SCRIPT_SIZE_MAX, pszFormat, ap);
va_end(ap);
(void) pdump_write(gpsStream[PDUMP_STREAM_SCRIPT2],
void PDumpCommentKM(char *pszComment, u32 ui32Flags)
{
- u32 ui32Count = 0;
+ int len;
if (PDumpSuspended())
return;
- snprintf(gpszMsg, SZ_MSG_SIZE_MAX, "-- %s", pszComment);
+ len = strlen(pszComment);
- while ((gpszMsg[ui32Count] != 0) && (ui32Count < SZ_MSG_SIZE_MAX))
- ui32Count++;
+ if ((len > 1) && (pszComment[len - 1] == '\n'))
+ pszComment[len - 1] = 0;
- if ((gpszMsg[ui32Count - 1] != '\n') && (ui32Count < SZ_MSG_SIZE_MAX)) {
- gpszMsg[ui32Count] = '\n';
- ui32Count++;
- gpszMsg[ui32Count] = '\0';
- }
- if ((gpszMsg[ui32Count - 2] != '\r') && (ui32Count < SZ_MSG_SIZE_MAX)) {
- gpszMsg[ui32Count - 1] = '\r';
- gpszMsg[ui32Count] = '\n';
- ui32Count++;
- gpszMsg[ui32Count] = '\0';
- }
+ if ((len > 2) && (pszComment[len - 2] == '\r'))
+ pszComment[len - 2] = 0;
- pdump_write(gpsStream[PDUMP_STREAM_SCRIPT2],
- (u8 *)gpszMsg, strlen(gpszMsg), ui32Flags);
+ pdump_print(ui32Flags, "-- %s\r\n", pszComment);
}
void PDumpComment(char *pszFormat, ...)
return;
va_start(ap, pszFormat);
- vsnprintf(gpszMsg, SZ_MSG_SIZE_MAX, pszFormat, ap);
+ vsnprintf(gpszComment, SZ_COMMENT_SIZE_MAX, pszFormat, ap);
va_end(ap);
- PDumpCommentKM(gpszMsg, PDUMP_FLAGS_CONTINUOUS);
+ PDumpCommentKM(gpszComment, PDUMP_FLAGS_CONTINUOUS);
}
void PDumpCommentWithFlags(u32 ui32Flags, char *pszFormat, ...)
return;
va_start(ap, pszFormat);
- vsnprintf(gpszMsg, SZ_MSG_SIZE_MAX, pszFormat, ap);
+ vsnprintf(gpszComment, SZ_COMMENT_SIZE_MAX, pszFormat, ap);
va_end(ap);
- PDumpCommentKM(gpszMsg, ui32Flags);
+ PDumpCommentKM(gpszComment, ui32Flags);
}
void PDumpSetFrameKM(u32 ui32Frame)
NULL) != PVRSRV_OK)
goto init_failed;
- if (!gpszMsg)
+ if (!gpszComment)
if (OSAllocMem(PVRSRV_OS_PAGEABLE_HEAP,
- SZ_MSG_SIZE_MAX,
- (void **)&gpszMsg,
+ SZ_COMMENT_SIZE_MAX,
+ (void **)&gpszComment,
NULL) != PVRSRV_OK)
goto init_failed;
gpszScript = NULL;
}
- if (gpszMsg) {
- OSFreeMem(PVRSRV_OS_PAGEABLE_HEAP, SZ_MSG_SIZE_MAX,
- (void *)gpszMsg, NULL);
- gpszMsg = NULL;
+ if (gpszComment) {
+ OSFreeMem(PVRSRV_OS_PAGEABLE_HEAP, SZ_COMMENT_SIZE_MAX,
+ (void *)gpszComment, NULL);
+ gpszComment = NULL;
}
}
gpszScript = NULL;
}
- if (gpszMsg) {
- OSFreeMem(PVRSRV_OS_PAGEABLE_HEAP, SZ_MSG_SIZE_MAX,
- (void *)gpszMsg, NULL);
- gpszMsg = NULL;
+ if (gpszComment) {
+ OSFreeMem(PVRSRV_OS_PAGEABLE_HEAP, SZ_COMMENT_SIZE_MAX,
+ (void *)gpszComment, NULL);
+ gpszComment = NULL;
}
}
PVR_ASSERT(hOSMemHandle);
PVR_ASSERT(((u32) ui32NumBytes & (ui32PageSize - 1)) == 0);
- pdump_print(PDUMP_FLAGS_CONTINUOUS, "-- MALLOC :SGXMEM:VA_%8.8X 0x%8.8X"
- " %u\r\n", ui32DevVAddr, ui32NumBytes, ui32PageSize);
+ PDumpComment("MALLOC :SGXMEM:VA_%8.8X 0x%8.8X %u\r\n",
+ ui32DevVAddr, ui32NumBytes, ui32PageSize);
ui32Offset = 0;
ui32NumPages = ui32NumBytes / ui32PageSize;
PVR_ASSERT(((u32) pvLinAddr & (ui32PTSize - 1)) == 0);
- pdump_print(PDUMP_FLAGS_CONTINUOUS,
- "-- MALLOC :SGXMEM:PAGE_TABLE 0x%8.8X %lu\r\n",
- ui32PTSize, SGX_MMU_PAGE_SIZE);
+ PDumpComment("MALLOC :SGXMEM:PAGE_TABLE 0x%8.8X %lu\r\n",
+ ui32PTSize, SGX_MMU_PAGE_SIZE);
pui8LinAddr = (u8 *) pvLinAddr;
PVR_ASSERT(((u32) sDevVAddr.uiAddr & (ui32PageSize - 1)) == 0);
PVR_ASSERT(((u32) ui32NumBytes & (ui32PageSize - 1)) == 0);
- pdump_print(PDUMP_FLAGS_CONTINUOUS, "-- FREE :SGXMEM:VA_%8.8X\r\n",
- sDevVAddr.uiAddr);
+ PDumpComment("FREE :SGXMEM:VA_%8.8X\r\n", sDevVAddr.uiAddr);
ui32NumPages = ui32NumBytes / ui32PageSize;
psDeviceNode = psBMHeap->pBMContext->psDeviceNode;
PVR_ASSERT(((u32) pvLinAddr & (ui32PTSize - 1)) == 0);
- pdump_print(PDUMP_FLAGS_CONTINUOUS, "-- FREE :SGXMEM:PAGE_TABLE\r\n");
+ PDumpComment("FREE :SGXMEM:PAGE_TABLE\r\n");
pui8LinAddr = (u8 *) pvLinAddr;
if (eError != PVRSRV_OK)
return eError;
- pdump_print(ui32Flags, "-- LDB :SGXMEM:VA_%8.8X:0x%8.8X 0x%8.8X "
- "0x%8.8X %%0%%.prm\r\n", psMemInfo->sDevVAddr.uiAddr,
- ui32Offset, ui32Bytes, ui32ParamOutPos);
+ PDumpCommentWithFlags(ui32Flags, "LDB :SGXMEM:VA_%8.8X:0x%8.8X "
+ "0x%8.8X 0x%8.8X %%0%%.prm\r\n",
+ psMemInfo->sDevVAddr.uiAddr, ui32Offset,
+ ui32Bytes, ui32ParamOutPos);
CpuPAddr =
OSMemHandleToCpuPAddr(psMemInfo->sMemBlk.hOSMemHandle, ui32Offset);
if (PDumpSuspended())
return;
- PDumpCommentWithFlags(ui32PDumpFlags,
- "\r\n-- Dump bitmap of render\r\n");
+ PDumpCommentWithFlags(ui32PDumpFlags, "Dump bitmap of render\r\n");
pdump_print(ui32PDumpFlags,
"SII %s %s.bin :SGXMEM:v:0x%08X 0x%08X "
ui32FileOffset = 0;
- PDumpCommentWithFlags(0, "\r\n-- Dump 3D signature registers\r\n");
+ PDumpCommentWithFlags(0, "Dump 3D signature registers\r\n");
snprintf(gpszFile, SZ_FILENAME_SIZE_MAX, "out%u_3d.sig",
ui32DumpFrameNum);
if (PDumpSuspended())
return;
- PDumpCommentWithFlags(0, "\r\n-- Dump counter registers\r\n");
+ PDumpCommentWithFlags(0, "Dump counter registers\r\n");
snprintf(gpszFile, SZ_FILENAME_SIZE_MAX, "out%u.perf",
ui32DumpFrameNum);
ui32FileOffset = 0;
if (PDumpSuspended())
return;
- PDumpCommentWithFlags(0, "\r\n-- Dump TA signature registers\r\n");
+ PDumpCommentWithFlags(0, "Dump TA signature registers\r\n");
snprintf(gpszFile, SZ_FILENAME_SIZE_MAX, "out%u_ta.sig",
ui32DumpFrameNum);
return;
PDumpCommentWithFlags(ui32PDumpFlags,
- "\r\n-- Dump Hardware Performance Circular Buffer\r\n");
+ "Dump Hardware Performance Circular Buffer\r\n");
pdump_print(ui32PDumpFlags,
"SAB :SGXMEM:v:0x%08X 0x%08X 0x%08X %s.bin\r\n",
sDevBaseAddr.uiAddr, ui32Size, ui32FileOffset, pszFileName);