HGSMIHost.h revision dfc68b62b28c82701524c03873d326a99ebaa6cf
199767f8919635c4928607450d9e0abb932109ceToomas Soome/** @file
199767f8919635c4928607450d9e0abb932109ceToomas Soome *
199767f8919635c4928607450d9e0abb932109ceToomas Soome * VBox Host Guest Shared Memory Interface (HGSMI).
199767f8919635c4928607450d9e0abb932109ceToomas Soome * Host part.
199767f8919635c4928607450d9e0abb932109ceToomas Soome */
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome/*
199767f8919635c4928607450d9e0abb932109ceToomas Soome * Copyright (C) 2006-2015 Oracle Corporation
199767f8919635c4928607450d9e0abb932109ceToomas Soome *
199767f8919635c4928607450d9e0abb932109ceToomas Soome * This file is part of VirtualBox Open Source Edition (OSE), as
199767f8919635c4928607450d9e0abb932109ceToomas Soome * available from http://www.virtualbox.org. This file is free software;
199767f8919635c4928607450d9e0abb932109ceToomas Soome * you can redistribute it and/or modify it under the terms of the GNU
199767f8919635c4928607450d9e0abb932109ceToomas Soome * General Public License (GPL) as published by the Free Software
199767f8919635c4928607450d9e0abb932109ceToomas Soome * Foundation, in version 2 as it comes in the "COPYING" file of the
199767f8919635c4928607450d9e0abb932109ceToomas Soome * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
199767f8919635c4928607450d9e0abb932109ceToomas Soome * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
199767f8919635c4928607450d9e0abb932109ceToomas Soome */
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome#ifndef ___HGSMIHost_h
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define ___HGSMIHost_h
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome#include <VBox/vmm/vm.h>
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome#include <VBox/HGSMI/HGSMI.h>
199767f8919635c4928607450d9e0abb932109ceToomas Soome#include <VBox/HGSMI/HGSMIChSetup.h>
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soomestruct HGSMIINSTANCE;
199767f8919635c4928607450d9e0abb932109ceToomas Soometypedef struct HGSMIINSTANCE *PHGSMIINSTANCE;
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome/* Callback for the guest notification about a new host buffer. */
199767f8919635c4928607450d9e0abb932109ceToomas Soometypedef DECLCALLBACK(void) FNHGSMINOTIFYGUEST(void *pvCallback);
199767f8919635c4928607450d9e0abb932109ceToomas Soometypedef FNHGSMINOTIFYGUEST *PFNHGSMINOTIFYGUEST;
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome/*
199767f8919635c4928607450d9e0abb932109ceToomas Soome * Public Host API for virtual devices.
199767f8919635c4928607450d9e0abb932109ceToomas Soome */
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soomeint HGSMICreate (PHGSMIINSTANCE *ppIns,
199767f8919635c4928607450d9e0abb932109ceToomas Soome PVM pVM,
199767f8919635c4928607450d9e0abb932109ceToomas Soome const char *pszName,
199767f8919635c4928607450d9e0abb932109ceToomas Soome HGSMIOFFSET offBase,
199767f8919635c4928607450d9e0abb932109ceToomas Soome uint8_t *pu8MemBase,
199767f8919635c4928607450d9e0abb932109ceToomas Soome HGSMISIZE cbMem,
199767f8919635c4928607450d9e0abb932109ceToomas Soome PFNHGSMINOTIFYGUEST pfnNotifyGuest,
199767f8919635c4928607450d9e0abb932109ceToomas Soome void *pvNotifyGuest,
199767f8919635c4928607450d9e0abb932109ceToomas Soome size_t cbContext);
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soomevoid HGSMIDestroy (PHGSMIINSTANCE pIns);
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soomevoid *HGSMIContext (PHGSMIINSTANCE pIns);
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soomevoid *HGSMIOffsetToPointerHost (PHGSMIINSTANCE pIns,
199767f8919635c4928607450d9e0abb932109ceToomas Soome HGSMIOFFSET offBuffer);
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas SoomeHGSMIOFFSET HGSMIPointerToOffsetHost (PHGSMIINSTANCE pIns,
199767f8919635c4928607450d9e0abb932109ceToomas Soome const void *pv);
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soomeint HGSMIHostChannelRegister (PHGSMIINSTANCE pIns,
199767f8919635c4928607450d9e0abb932109ceToomas Soome uint8_t u8Channel,
199767f8919635c4928607450d9e0abb932109ceToomas Soome PFNHGSMICHANNELHANDLER pfnChannelHandler,
199767f8919635c4928607450d9e0abb932109ceToomas Soome void *pvChannelHandler);
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soomeint HGSMIChannelRegisterName (PHGSMIINSTANCE pIns,
199767f8919635c4928607450d9e0abb932109ceToomas Soome const char *pszChannel,
199767f8919635c4928607450d9e0abb932109ceToomas Soome PFNHGSMICHANNELHANDLER pfnChannelHandler,
199767f8919635c4928607450d9e0abb932109ceToomas Soome void *pvChannelHandler,
199767f8919635c4928607450d9e0abb932109ceToomas Soome uint8_t *pu8Channel);
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soomeint HGSMISetupHostHeap (PHGSMIINSTANCE pIns,
199767f8919635c4928607450d9e0abb932109ceToomas Soome HGSMIOFFSET offHeap,
199767f8919635c4928607450d9e0abb932109ceToomas Soome HGSMISIZE cbHeap);
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soomeint HGSMISaveStateExec (PHGSMIINSTANCE pIns, PSSMHANDLE pSSM);
199767f8919635c4928607450d9e0abb932109ceToomas Soomeint HGSMILoadStateExec (PHGSMIINSTANCE pIns, PSSMHANDLE pSSM);
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome/*
199767f8919635c4928607450d9e0abb932109ceToomas Soome * Virtual hardware IO handlers.
199767f8919635c4928607450d9e0abb932109ceToomas Soome */
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome/* Guests passes a new command buffer to the host. */
199767f8919635c4928607450d9e0abb932109ceToomas Soomevoid HGSMIGuestWrite (PHGSMIINSTANCE pIns,
199767f8919635c4928607450d9e0abb932109ceToomas Soome HGSMIOFFSET offBuffer);
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome/* Guest reads information about guest buffers. */
199767f8919635c4928607450d9e0abb932109ceToomas SoomeHGSMIOFFSET HGSMIGuestRead (PHGSMIINSTANCE pIns);
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome/* Guest reads the host FIFO to get a command. */
199767f8919635c4928607450d9e0abb932109ceToomas SoomeHGSMIOFFSET HGSMIHostRead (PHGSMIINSTANCE pIns);
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome/* Guest reports that the command at this offset has been processed. */
199767f8919635c4928607450d9e0abb932109ceToomas Soomevoid HGSMIHostWrite (PHGSMIINSTANCE pIns,
199767f8919635c4928607450d9e0abb932109ceToomas Soome HGSMIOFFSET offBuffer);
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soomevoid HGSMISetHostGuestFlags(PHGSMIINSTANCE pIns, uint32_t flags);
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soomevoid HGSMIClearHostGuestFlags(PHGSMIINSTANCE pIns, uint32_t flags);
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome/*
199767f8919635c4928607450d9e0abb932109ceToomas Soome * Low level interface for submitting buffers to the guest.
199767f8919635c4928607450d9e0abb932109ceToomas Soome *
199767f8919635c4928607450d9e0abb932109ceToomas Soome * These functions are not directly available for anyone but the
199767f8919635c4928607450d9e0abb932109ceToomas Soome * virtual hardware device.
199767f8919635c4928607450d9e0abb932109ceToomas Soome */
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome/* Allocate a buffer in the host heap. */
199767f8919635c4928607450d9e0abb932109ceToomas Soomeint HGSMIHostCommandAlloc (PHGSMIINSTANCE pIns,
199767f8919635c4928607450d9e0abb932109ceToomas Soome void **ppvMem,
199767f8919635c4928607450d9e0abb932109ceToomas Soome HGSMISIZE cbMem,
199767f8919635c4928607450d9e0abb932109ceToomas Soome uint8_t u8Channel,
199767f8919635c4928607450d9e0abb932109ceToomas Soome uint16_t u16ChannelInfo);
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soomeint HGSMIHostCommandProcess (PHGSMIINSTANCE pIns,
199767f8919635c4928607450d9e0abb932109ceToomas Soome void *pvMem);
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soomeint HGSMIHostCommandProcessAndFreeAsynch (PHGSMIINSTANCE pIns,
199767f8919635c4928607450d9e0abb932109ceToomas Soome void *pvMem,
199767f8919635c4928607450d9e0abb932109ceToomas Soome bool bDoIrq);
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soomeint HGSMIHostCommandFree (PHGSMIINSTANCE pIns,
199767f8919635c4928607450d9e0abb932109ceToomas Soome void *pvMem);
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soomeint HGSMIHostLoadStateExec (PHGSMIINSTANCE pIns, PSSMHANDLE pSSM, uint32_t u32Version);
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soomeint HGSMIHostSaveStateExec (PHGSMIINSTANCE pIns, PSSMHANDLE pSSM);
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome#ifdef VBOX_WITH_WDDM
199767f8919635c4928607450d9e0abb932109ceToomas Soomeint HGSMICompleteGuestCommand(PHGSMIINSTANCE pIns, void *pvMem, bool bDoIrq);
199767f8919635c4928607450d9e0abb932109ceToomas Soome#endif
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome#endif /* !___HGSMIHost_h*/
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome