IMG_VOID PDumpInit(IMG_VOID) { IMG_UINT32 i; DBGKM_CONNECT_NOTIFIER sConnectNotifier; if (!gpfnDbgDrv) { DBGDrvGetServiceTable((IMG_VOID **)&gpfnDbgDrv); if (gpfnDbgDrv == IMG_NULL) { return; } 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_FILE); 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; } sConnectNotifier.pfnConnectNotifier = 0; gpfnDbgDrv->pfnSetConnectNotifier(sConnectNotifier); gpfnDbgDrv = IMG_NULL; }
/************************************************************************** * 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; }
void PDumpInit(void) { u32 i = 0; if (!gpfnDbgDrv) { DBGDrvGetServiceTable((void **) &gpfnDbgDrv); if (gpfnDbgDrv == NULL) return; if (!gsDBGPdumpState.pszFile) if (OSAllocMem (PVRSRV_OS_PAGEABLE_HEAP, SZ_FILENAME_SIZE_MAX, (void **) &gsDBGPdumpState.pszFile, 0) != PVRSRV_OK) goto init_failed; if (!gsDBGPdumpState.pszMsg) if (OSAllocMem (PVRSRV_OS_PAGEABLE_HEAP, SZ_MSG_SIZE_MAX, (void **) &gsDBGPdumpState.pszMsg, 0) != PVRSRV_OK) goto init_failed; if (!gsDBGPdumpState.pszScript) if (OSAllocMem (PVRSRV_OS_PAGEABLE_HEAP, SZ_SCRIPT_SIZE_MAX, (void **) &gsDBGPdumpState.pszScript, 0) != 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_FILE); PDUMPCOMMENT("Start of Init Phase"); } return; init_failed: if (gsDBGPdumpState.pszFile) { OSFreeMem(PVRSRV_OS_PAGEABLE_HEAP, SZ_FILENAME_SIZE_MAX, (void *) gsDBGPdumpState.pszFile, 0); gsDBGPdumpState.pszFile = NULL; } if (gsDBGPdumpState.pszScript) { OSFreeMem(PVRSRV_OS_PAGEABLE_HEAP, SZ_SCRIPT_SIZE_MAX, (void *) gsDBGPdumpState.pszScript, 0); gsDBGPdumpState.pszScript = NULL; } if (gsDBGPdumpState.pszMsg) { OSFreeMem(PVRSRV_OS_PAGEABLE_HEAP, SZ_MSG_SIZE_MAX, (void *) gsDBGPdumpState.pszMsg, 0); gsDBGPdumpState.pszMsg = NULL; } gpfnDbgDrv = NULL; }