VirtualBox

source: vbox/trunk/src/VBox/Devices/Graphics/HGSMI/HGSMIHost.h@ 60465

Last change on this file since 60465 was 60465, checked in by vboxsync, 9 years ago

DevVGA: set IRQs only if the VM is running (bugref:8320)

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 4.0 KB
Line 
1/* $Id: HGSMIHost.h 60465 2016-04-12 18:42:22Z vboxsync $ */
2/** @file
3 *
4 * VBox Host Guest Shared Memory Interface (HGSMI).
5 * Host part.
6 */
7
8/*
9 * Copyright (C) 2006-2015 Oracle Corporation
10 *
11 * This file is part of VirtualBox Open Source Edition (OSE), as
12 * available from http://www.virtualbox.org. This file is free software;
13 * you can redistribute it and/or modify it under the terms of the GNU
14 * General Public License (GPL) as published by the Free Software
15 * Foundation, in version 2 as it comes in the "COPYING" file of the
16 * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
17 * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
18 */
19
20
21#ifndef ___HGSMIHost_h
22#define ___HGSMIHost_h
23
24#include <VBox/vmm/vm.h>
25
26#include <VBox/HGSMI/HGSMI.h>
27#include <VBox/HGSMI/HGSMIChSetup.h>
28
29struct HGSMIINSTANCE;
30typedef struct HGSMIINSTANCE *PHGSMIINSTANCE;
31
32/* Callback for the guest notification about a new host buffer. */
33typedef DECLCALLBACK(void) FNHGSMINOTIFYGUEST(void *pvCallback);
34typedef FNHGSMINOTIFYGUEST *PFNHGSMINOTIFYGUEST;
35
36/*
37 * Public Host API for virtual devices.
38 */
39
40int HGSMICreate (PHGSMIINSTANCE *ppIns,
41 PVM pVM,
42 const char *pszName,
43 HGSMIOFFSET offBase,
44 uint8_t *pu8MemBase,
45 HGSMISIZE cbMem,
46 PFNHGSMINOTIFYGUEST pfnNotifyGuest,
47 void *pvNotifyGuest,
48 size_t cbContext);
49
50void HGSMIDestroy (PHGSMIINSTANCE pIns);
51
52void *HGSMIContext (PHGSMIINSTANCE pIns);
53
54void *HGSMIOffsetToPointerHost (PHGSMIINSTANCE pIns,
55 HGSMIOFFSET offBuffer);
56
57HGSMIOFFSET HGSMIPointerToOffsetHost (PHGSMIINSTANCE pIns,
58 const void *pv);
59
60int HGSMIHostChannelRegister (PHGSMIINSTANCE pIns,
61 uint8_t u8Channel,
62 PFNHGSMICHANNELHANDLER pfnChannelHandler,
63 void *pvChannelHandler);
64
65int HGSMIChannelRegisterName (PHGSMIINSTANCE pIns,
66 const char *pszChannel,
67 PFNHGSMICHANNELHANDLER pfnChannelHandler,
68 void *pvChannelHandler,
69 uint8_t *pu8Channel);
70
71int HGSMIHostHeapSetup(PHGSMIINSTANCE pIns,
72 HGSMIOFFSET offHeap,
73 HGSMISIZE cbHeap);
74
75/*
76 * Virtual hardware IO handlers.
77 */
78
79/* Guests passes a new command buffer to the host. */
80void HGSMIGuestWrite (PHGSMIINSTANCE pIns,
81 HGSMIOFFSET offBuffer);
82
83/* Guest reads information about guest buffers. */
84HGSMIOFFSET HGSMIGuestRead (PHGSMIINSTANCE pIns);
85
86/* Guest reads the host FIFO to get a command. */
87HGSMIOFFSET HGSMIHostRead (PHGSMIINSTANCE pIns);
88
89/* Guest reports that the command at this offset has been processed. */
90void HGSMIHostWrite (PHGSMIINSTANCE pIns,
91 HGSMIOFFSET offBuffer);
92
93void HGSMISetHostGuestFlags(PHGSMIINSTANCE pIns, uint32_t flags);
94uint32_t HGSMIGetHostGuestFlags(HGSMIINSTANCE *pIns);
95
96void HGSMIClearHostGuestFlags(PHGSMIINSTANCE pIns, uint32_t flags);
97
98/*
99 * Low level interface for submitting buffers to the guest.
100 *
101 * These functions are not directly available for anyone but the
102 * virtual hardware device.
103 */
104
105/* Allocate a buffer in the host heap. */
106int HGSMIHostCommandAlloc(PHGSMIINSTANCE pIns,
107 void **ppvData,
108 HGSMISIZE cbData,
109 uint8_t u8Channel,
110 uint16_t u16ChannelInfo);
111
112int HGSMIHostCommandSubmitAndFreeAsynch(PHGSMIINSTANCE pIns,
113 void *pvData,
114 bool fDoIrq);
115
116int HGSMIHostCommandFree(PHGSMIINSTANCE pIns,
117 void *pvData);
118
119int HGSMIHostLoadStateExec (PHGSMIINSTANCE pIns, PSSMHANDLE pSSM, uint32_t u32Version);
120
121int HGSMIHostSaveStateExec (PHGSMIINSTANCE pIns, PSSMHANDLE pSSM);
122
123#ifdef VBOX_WITH_WDDM
124int HGSMICompleteGuestCommand(PHGSMIINSTANCE pIns, void *pvMem, bool bDoIrq);
125#endif
126
127#endif /* !___HGSMIHost_h*/
128
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette