Lines Matching defs:pClient

244 static int _crVBoxHGSMIClientInit(PCRVBOXHGSMI_CLIENT pClient, PVBOXUHGSMI pHgsmi)
248 pClient->pHgsmi = pHgsmi;
250 rc = pHgsmi->pfnBufferCreate(pHgsmi, CRVBOXHGSMI_PAGE_ALIGN(1), Flags, &pClient->pCmdBuffer);
254 rc = pHgsmi->pfnBufferCreate(pHgsmi, CRVBOXHGSMI_PAGE_ALIGN(1), Flags, &pClient->pHGBuffer);
257 pClient->pvHGBuffer = NULL;
258 pClient->bufpool = crBufferPoolInit(16);
264 pClient->pCmdBuffer->pfnDestroy(pClient->pCmdBuffer);
269 pClient->pHgsmi = NULL;
279 static int _crVBoxHGSMIClientTerm(PCRVBOXHGSMI_CLIENT pClient, PVBOXUHGSMI *ppHgsmi)
281 if (pClient->bufpool)
282 crBufferPoolCallbackFree(pClient->bufpool, _crVBoxHGSMIBufferFree);
283 pClient->bufpool = NULL;
285 if (pClient->pHGBuffer)
287 pClient->pHGBuffer->pfnDestroy(pClient->pHGBuffer);
288 pClient->pHGBuffer = NULL;
291 if (pClient->pCmdBuffer)
293 pClient->pCmdBuffer->pfnDestroy(pClient->pCmdBuffer);
294 pClient->pCmdBuffer = NULL;
299 *ppHgsmi = pClient->pHgsmi;
301 pClient->pHgsmi = NULL;
311 PCRVBOXHGSMI_CLIENT pClient = crAlloc(sizeof (CRVBOXHGSMI_CLIENT));
313 if (pClient)
315 int rc = _crVBoxHGSMIClientInit(pClient, pHgsmi);
317 return (HVBOXCRHGSMI_CLIENT)pClient;
329 PCRVBOXHGSMI_CLIENT pClient = (PCRVBOXHGSMI_CLIENT)hClient;
330 _crVBoxHGSMIClientTerm(pClient, NULL);
331 crFree(pClient);
338 PCRVBOXHGSMI_CLIENT pClient = (PCRVBOXHGSMI_CLIENT)VBoxCrHgsmiQueryClient();
339 CRASSERT(pClient);
340 return pClient;
368 static PVBOXUHGSMI_BUFFER _crVBoxHGSMIBufAlloc(PCRVBOXHGSMI_CLIENT pClient, uint32_t cbSize)
373 buf = (PVBOXUHGSMI_BUFFER ) crBufferPoolPop(pClient->bufpool, cbSize);
379 (void *) pClient->bufpool,
381 rc = pClient->pHgsmi->pfnBufferCreate(pClient->pHgsmi, cbSize, Flags, &buf);
404 static void _crVBoxHGSMIBufFree(PCRVBOXHGSMI_CLIENT pClient, PVBOXUHGSMI_BUFFER pBuf)
406 crBufferPoolPush(pClient->bufpool, pBuf, pBuf->cbBuffer);
409 static CRVBOXHGSMIHDR *_crVBoxHGSMICmdBufferLock(PCRVBOXHGSMI_CLIENT pClient, uint32_t cbBuffer)
426 rc = pClient->pCmdBuffer->pfnLock(pClient->pCmdBuffer, 0, cbBuffer, fFlags, (void**)&pHdr);
436 static CRVBOXHGSMIHDR *_crVBoxHGSMICmdBufferLockRo(PCRVBOXHGSMI_CLIENT pClient, uint32_t cbBuffer)
453 rc = pClient->pCmdBuffer->pfnLock(pClient->pCmdBuffer, 0, cbBuffer, fFlags, (void**)&pHdr);
459 static void _crVBoxHGSMICmdBufferUnlock(PCRVBOXHGSMI_CLIENT pClient)
461 int rc = pClient->pCmdBuffer->pfnUnlock(pClient->pCmdBuffer);
466 static int32_t _crVBoxHGSMICmdBufferGetRc(PCRVBOXHGSMI_CLIENT pClient)
474 rc = pClient->pCmdBuffer->pfnLock(pClient->pCmdBuffer, 0, sizeof (*pHdr), fFlags, (void**)&pHdr);
483 pClient->pCmdBuffer->pfnUnlock(pClient->pCmdBuffer);
488 DECLINLINE(PVBOXUHGSMI_BUFFER) _crVBoxHGSMIRecvBufGet(PCRVBOXHGSMI_CLIENT pClient)
490 if (pClient->pvHGBuffer)
492 int rc = pClient->pHGBuffer->pfnUnlock(pClient->pHGBuffer);
497 pClient->pvHGBuffer = NULL;
499 return pClient->pHGBuffer;
502 DECLINLINE(void*) _crVBoxHGSMIRecvBufData(PCRVBOXHGSMI_CLIENT pClient, uint32_t cbBuffer)
506 CRASSERT(!pClient->pvHGBuffer);
508 rc = pClient->pHGBuffer->pfnLock(pClient->pHGBuffer, 0, cbBuffer, fFlags, &pClient->pvHGBuffer);
510 return pClient->pvHGBuffer;
517 DECLINLINE(void) _crVBoxHGSMIFillCmd(VBOXUHGSMI_BUFFER_SUBMIT *pSubm, PCRVBOXHGSMI_CLIENT pClient, uint32_t cbData)
519 pSubm->pBuf = pClient->pCmdBuffer;
591 PCRVBOXHGSMI_CLIENT pClient = g_crvboxhgcm.bHgsmiOn ? _crVBoxHGSMIClientGet(conn) : NULL;
592 if (pClient)
594 return VBoxCrHgsmiCtlConCall(pClient->pHgsmi, (struct VBoxGuestHGCMCallInfo *)pvData, cbData);
1661 static void *_crVBoxHGSMIDoAlloc(CRConnection *conn, PCRVBOXHGSMI_CLIENT pClient)
1668 buf = _crVBoxHGSMIBufAlloc(pClient, CRVBOXHGSMI_BUF_SIZE(cbSize));
1672 buf->pvUserData = pClient;
1706 PCRVBOXHGSMI_CLIENT pClient = (PCRVBOXHGSMI_CLIENT)pBuf->pvUserData;
1707 _crVBoxHGSMIBufFree(pClient, pBuf);
1717 PCRVBOXHGSMI_CLIENT pClient;
1726 pClient = _crVBoxHGSMIClientGet(conn);
1727 if (pClient)
1729 pvBuf = _crVBoxHGSMIDoAlloc(conn, pClient);
1759 static void _crVBoxHGSMIPollHost(CRConnection *conn, PCRVBOXHGSMI_CLIENT pClient)
1761 CRVBOXHGSMIREAD *parms = (CRVBOXHGSMIREAD *)_crVBoxHGSMICmdBufferLock(pClient, sizeof (*parms));
1778 _crVBoxHGSMICmdBufferUnlock(pClient);
1780 pRecvBuffer = _crVBoxHGSMIRecvBufGet(pClient);
1785 _crVBoxHGSMIFillCmd(&aSubmit[0], pClient, sizeof (*parms));
1793 rc = pClient->pHgsmi->pfnBufferSubmit(pClient->pHgsmi, aSubmit, 2);
1800 parms = (CRVBOXHGSMIREAD *)_crVBoxHGSMICmdBufferLockRo(pClient, sizeof (*parms));
1813 _crVBoxHGSMICmdBufferUnlock(pClient);
1817 void *pvData = _crVBoxHGSMIRecvBufData(pClient, cbBuffer);
1827 static void _crVBoxHGSMIReadExact(CRConnection *conn, PCRVBOXHGSMI_CLIENT pClient)
1829 _crVBoxHGSMIPollHost(conn, pClient);
1840 _crVBoxHGSMIWriteReadExact(CRConnection *conn, PCRVBOXHGSMI_CLIENT pClient, void *buf, uint32_t offBuffer, unsigned int len, bool bIsBuffer)
1842 CRVBOXHGSMIWRITEREAD *parms = (CRVBOXHGSMIWRITEREAD*)_crVBoxHGSMICmdBufferLock(pClient, sizeof (*parms));
1860 _crVBoxHGSMICmdBufferUnlock(pClient);
1865 pBuf = _crVBoxHGSMIBufAlloc(pClient, len);
1890 _crVBoxHGSMIBufFree(pClient, pBuf);
1903 PVBOXUHGSMI_BUFFER pRecvBuffer = _crVBoxHGSMIRecvBufGet(pClient);
1910 _crVBoxHGSMIFillCmd(&aSubmit[0], pClient, sizeof (*parms));
1923 rc = pClient->pHgsmi->pfnBufferSubmit(pClient->pHgsmi, aSubmit, 3);
1930 parms = (CRVBOXHGSMIWRITEREAD *)_crVBoxHGSMICmdBufferLockRo(pClient, sizeof (*parms));
1940 _crVBoxHGSMICmdBufferUnlock(pClient);
1948 void *pvData = _crVBoxHGSMIRecvBufData(pClient, cbWriteback);
1962 CRASSERT(!pClient->pvHGBuffer);
1963 CRASSERT(cbWriteback>pClient->pHGBuffer->cbBuffer);
1966 rc = pClient->pHgsmi->pfnBufferCreate(pClient->pHgsmi, CRVBOXHGSMI_PAGE_ALIGN(cbWriteback), Flags, &pNewBuf);
1969 rc = pClient->pHGBuffer->pfnDestroy(pClient->pHGBuffer);
1972 pClient->pHGBuffer = pNewBuf;
1974 _crVBoxHGSMIReadExact(conn, pClient/*, cbWriteback*/);
2001 _crVBoxHGSMIBufFree(pClient, pBuf);
2006 static void _crVBoxHGSMIWriteExact(CRConnection *conn, PCRVBOXHGSMI_CLIENT pClient, PVBOXUHGSMI_BUFFER pBuf, uint32_t offStart, unsigned int len)
2015 CRVBOXHGSMIINJECT *parms = (CRVBOXHGSMIINJECT *)_crVBoxHGSMICmdBufferLock(pClient, sizeof (*parms));
2030 _crVBoxHGSMICmdBufferUnlock(pClient);
2032 _crVBoxHGSMIFillCmd(&aSubmit[0], pClient, sizeof (*parms));
2040 rc = pClient->pHgsmi->pfnBufferSubmit(pClient->pHgsmi, aSubmit, 2);
2043 callRes = _crVBoxHGSMICmdBufferGetRc(pClient);
2054 CRVBOXHGSMIWRITE * parms = (CRVBOXHGSMIWRITE *)_crVBoxHGSMICmdBufferLock(pClient, sizeof (*parms));;
2062 _crVBoxHGSMICmdBufferUnlock(pClient);
2064 _crVBoxHGSMIFillCmd(&aSubmit[0], pClient, sizeof (*parms));
2072 rc = pClient->pHgsmi->pfnBufferSubmit(pClient->pHgsmi, aSubmit, 2);
2075 callRes = _crVBoxHGSMICmdBufferGetRc(pClient);
2093 PCRVBOXHGSMI_CLIENT pClient;
2105 pClient = _crVBoxHGSMIClientGet(conn);
2106 if (pClient)
2115 _crVBoxHGSMIWriteReadExact(conn, pClient, (void*)start, 0, len, false);
2169 pClient = (PCRVBOXHGSMI_CLIENT)pBuf->pvUserData;
2170 if (pClient != &conn->HgsmiClient)
2181 _crVBoxHGSMIWriteExact(conn, pClient, pBuf, CRVBOXHGSMI_BUF_OFFSET(start, *bufp) + CRVBOXHGSMI_BUF_HDR_SIZE(), len);
2186 _crVBoxHGSMIWriteReadExact(conn, pClient, pBuf, CRVBOXHGSMI_BUF_OFFSET(start, *bufp) + CRVBOXHGSMI_BUF_HDR_SIZE(), len, true);
2190 _crVBoxHGSMIBufFree(pClient, pBuf);
2258 PCRVBOXHGSMI_CLIENT pClient;
2267 pClient = _crVBoxHGSMIClientGet(conn);
2268 if (pClient)
2270 rc = VBoxCrHgsmiCtlConGetClientID(pClient->pHgsmi, &conn->u32ClientID);
2277 rc = VBoxCrHgsmiCtlConGetHostCaps(pClient->pHgsmi, &g_crvboxhgcm.u32HostCaps);
2581 PCRVBOXHGSMI_CLIENT pClient;
2582 if (g_crvboxhgcm.bHgsmiOn && !!(pClient = _crVBoxHGSMIClientGet(conn)))
2584 _crVBoxHGSMIPollHost(conn, pClient);