VirtualBox

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

Last change on this file since 58466 was 55560, checked in by vboxsync, 10 years ago

HGSMI: host command submission cleanup, removed obsolete code, comments.

  • 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 55560 2015-04-30 14:57:47Z 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);
94
95void HGSMIClearHostGuestFlags(PHGSMIINSTANCE pIns, uint32_t flags);
96
97/*
98 * Low level interface for submitting buffers to the guest.
99 *
100 * These functions are not directly available for anyone but the
101 * virtual hardware device.
102 */
103
104/* Allocate a buffer in the host heap. */
105int HGSMIHostCommandAlloc(PHGSMIINSTANCE pIns,
106 void **ppvData,
107 HGSMISIZE cbData,
108 uint8_t u8Channel,
109 uint16_t u16ChannelInfo);
110
111int HGSMIHostCommandSubmitAndFreeAsynch(PHGSMIINSTANCE pIns,
112 void *pvData,
113 bool fDoIrq);
114
115int HGSMIHostCommandFree(PHGSMIINSTANCE pIns,
116 void *pvData);
117
118int HGSMIHostLoadStateExec (PHGSMIINSTANCE pIns, PSSMHANDLE pSSM, uint32_t u32Version);
119
120int HGSMIHostSaveStateExec (PHGSMIINSTANCE pIns, PSSMHANDLE pSSM);
121
122#ifdef VBOX_WITH_WDDM
123int HGSMICompleteGuestCommand(PHGSMIINSTANCE pIns, void *pvMem, bool bDoIrq);
124#endif
125
126#endif /* !___HGSMIHost_h*/
127
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