Esempio n. 1
0
HGSMIOFFSET HGSMIHeapBufferOffset (HGSMIHEAP *pHeap,
                                   void *pvData)
{
    HGSMIBUFFERHEADER *pHeader = HGSMIBufferHeaderFromData (pvData);

    HGSMIOFFSET offBuffer = HGSMIPointerToOffset (&pHeap->area, pHeader);

    return offBuffer;
}
void HGSMIHeapFree(HGSMIHEAP *pHeap,
                   void *pvData)
{
    if (pvData)
    {
        HGSMIBUFFERHEADER *pHeader = HGSMIBufferHeaderFromData(pvData);
        HGSMIHeapBufferFree(pHeap, pHeader);
    }
}
/**
 * Inform the host that a command has been handled.
 *
 * @param  pCtx   the context containing the heap to be used
 * @param  pvMem  pointer into the heap as mapped in @a pCtx to the command to
 *                be completed
 */
RTDECL(void) VBoxHGSMIHostCmdComplete(PHGSMIHOSTCOMMANDCONTEXT pCtx,
                                      void *pvMem)
{
    HGSMIBUFFERHEADER *pHdr = HGSMIBufferHeaderFromData(pvMem);
    HGSMIOFFSET offMem = HGSMIPointerToOffset(&pCtx->areaCtx, pHdr);
    Assert(offMem != HGSMIOFFSET_VOID);
    if(offMem != HGSMIOFFSET_VOID)
    {
        HGSMINotifyHostCmdComplete(pCtx, offMem);
    }
}
Esempio n. 4
0
void HGSMIHeapFree (HGSMIHEAP *pHeap,
                    void *pvData)
{
    if (   pvData
        && pHeap->u.hPtr != NIL_RTHEAPSIMPLE)
    {
        HGSMIBUFFERHEADER *pHeader = HGSMIBufferHeaderFromData (pvData);

        HGSMIHeapBufferFree (pHeap, pHeader);
    }
}