/** * Submit a command descriptor allocated by @a VBoxHGSMIBufferAlloc. * * @param pCtx the context containing the heap used * @param pvBuffer the pointer returned by @a VBoxHGSMIBufferAlloc */ RTDECL(int) VBoxHGSMIBufferSubmit(PHGSMIGUESTCOMMANDCONTEXT pCtx, void *pvBuffer) { /* Initialize the buffer and get the offset for port IO. */ HGSMIOFFSET offBuffer = HGSMIHeapBufferOffset (HGSMIGUESTCMDHEAP_GET(&pCtx->heapCtx), pvBuffer); Assert(offBuffer != HGSMIOFFSET_VOID); if (offBuffer != HGSMIOFFSET_VOID) { /* Submit the buffer to the host. */ VBoxVideoCmnPortWriteUlong(pCtx->port, offBuffer); return VINF_SUCCESS; } return VERR_INVALID_PARAMETER; }
/** Send completion notification to the host for the command located at offset * @a offt into the host command buffer. */ static void HGSMINotifyHostCmdComplete(PHGSMIHOSTCOMMANDCONTEXT pCtx, HGSMIOFFSET offt) { VBoxVideoCmnPortWriteUlong(pCtx->port, offt); }
static int vboxCmdVbvaSubmitHgsmi(PHGSMIGUESTCOMMANDCONTEXT pHGSMICtx, HGSMIOFFSET offDr) { VBoxVideoCmnPortWriteUlong(pHGSMICtx->port, offDr); return VINF_SUCCESS; }