IMG_INTERNAL PVRSRV_ERROR IMG_CALLCONV BridgeSyncPrimPDumpPol(IMG_HANDLE hBridge, IMG_HANDLE hSyncHandle, IMG_UINT32 ui32Offset, IMG_UINT32 ui32Value, IMG_UINT32 ui32Mask, PDUMP_POLL_OPERATOR eOperator, PDUMP_FLAGS_T uiPDumpFlags) { PVRSRV_ERROR eError; SYNC_PRIMITIVE_BLOCK * psSyncHandleInt; PVR_UNREFERENCED_PARAMETER(hBridge); psSyncHandleInt = (SYNC_PRIMITIVE_BLOCK *) hSyncHandle; eError = PVRSRVSyncPrimPDumpPolKM( psSyncHandleInt, ui32Offset, ui32Value, ui32Mask, eOperator, uiPDumpFlags); return eError; }
static IMG_INT PVRSRVBridgeSyncPrimPDumpPol(IMG_UINT32 ui32BridgeID, PVRSRV_BRIDGE_IN_SYNCPRIMPDUMPPOL *psSyncPrimPDumpPolIN, PVRSRV_BRIDGE_OUT_SYNCPRIMPDUMPPOL *psSyncPrimPDumpPolOUT, CONNECTION_DATA *psConnection) { SYNC_PRIMITIVE_BLOCK * psSyncHandleInt = IMG_NULL; IMG_HANDLE hSyncHandleInt2 = IMG_NULL; PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_SYNC_SYNCPRIMPDUMPPOL); { /* Look up the address from the handle */ psSyncPrimPDumpPolOUT->eError = PVRSRVLookupHandle(psConnection->psHandleBase, (IMG_HANDLE *) &hSyncHandleInt2, psSyncPrimPDumpPolIN->hSyncHandle, PVRSRV_HANDLE_TYPE_SYNC_PRIMITIVE_BLOCK); if(psSyncPrimPDumpPolOUT->eError != PVRSRV_OK) { goto SyncPrimPDumpPol_exit; } /* Look up the data from the resman address */ psSyncPrimPDumpPolOUT->eError = ResManFindPrivateDataByPtr(hSyncHandleInt2, (IMG_VOID **) &psSyncHandleInt); if(psSyncPrimPDumpPolOUT->eError != PVRSRV_OK) { goto SyncPrimPDumpPol_exit; } } psSyncPrimPDumpPolOUT->eError = PVRSRVSyncPrimPDumpPolKM( psSyncHandleInt, psSyncPrimPDumpPolIN->ui32Offset, psSyncPrimPDumpPolIN->ui32Value, psSyncPrimPDumpPolIN->ui32Mask, psSyncPrimPDumpPolIN->eOperator, psSyncPrimPDumpPolIN->uiPDumpFlags); SyncPrimPDumpPol_exit: return 0; }
PVRSRV_ERROR PVRSRVSyncPrimOpPDumpPolKM(SERVER_OP_COOKIE *psServerCookie, PDUMP_POLL_OPERATOR eOperator, PDUMP_FLAGS_T ui32PDumpFlags) { IMG_UINT32 i; PVRSRV_ERROR eError = PVRSRV_OK; if (!psServerCookie->bActive) { PVR_DPF((PVR_DBG_ERROR, "%s: Operation cookie not active (no take operation performed)", __FUNCTION__)); eError = PVRSRV_ERROR_BAD_SYNC_STATE; goto e0; } /* PDump POL on the client syncs */ for (i = 0; i < psServerCookie->ui32ClientSyncCount; i++) { if (psServerCookie->paui32Flags[i] & PVRSRV_CLIENT_SYNC_PRIM_OP_CHECK) { IMG_UINT32 ui32BlockIndex = psServerCookie->paui32SyncBlockIndex[i]; IMG_UINT32 ui32Index = psServerCookie->paui32Index[i]; SYNC_PRIMITIVE_BLOCK *psSyncBlock = psServerCookie->papsSyncPrimBlock[ui32BlockIndex]; PVRSRVSyncPrimPDumpPolKM(psSyncBlock, ui32Index*sizeof(IMG_UINT32), psServerCookie->paui32FenceValue[i], 0xFFFFFFFFU, eOperator, ui32PDumpFlags); } } /* PDump POL on the server syncs */ for (i = 0; i < psServerCookie->ui32ServerSyncCount; i++) { SERVER_SYNC_PRIMITIVE *psServerSync = psServerCookie->papsServerSync[i]; IMG_UINT32 ui32FenceValue = psServerCookie->paui32ServerFenceValue[i]; SyncPrimPDumpPol(psServerSync->psSync, ui32FenceValue, 0xFFFFFFFFU, PDUMP_POLL_OPERATOR_EQUAL, ui32PDumpFlags); } e0: return eError; }