VirtualBox

source: vbox/trunk/src/VBox/Main/include/Global.h@ 40685

Last change on this file since 40685 was 39248, checked in by vboxsync, 13 years ago

Runtime: new guest OS type for Solaris 11
Frontends/VirtualBox: add new patterns for Solaris 11 guest OS type, reuse the icon
Frontends/VBoxManage: more details for "list ostypes"
Main/xml: make guest OS type in config file an arbitrary string (still validated/mapped in the old way in the settings code), remove hardcoded limit of 8 network adapters
Main/Global: move list of valid guest OS types into a single place, add function to get the network adapter limit for each chipset type
Main/Console+Machine+Snapshot+NetworkAdapter+Appliance+VirtualBox+Guest+SystemProperties: consistently use the appropriate network adapter limit so that ICH9 chipset can use 36 network adapters, adapt to cleaned up guest OS type handling, remove leftover rendundant guest OS mapping, whitespace
Network/NAT: release log message cosmetics, allow unlimited number of instances, fix maxconn clamping
Network/PCNet+VirtioNet+E1000: allow unlimited number of instances

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 7.2 KB
Line 
1/* $Id: Global.h 39248 2011-11-09 12:29:53Z vboxsync $ */
2/** @file
3 * VirtualBox COM API - Global Declarations and Definitions.
4 */
5
6/*
7 * Copyright (C) 2008-2011 Oracle Corporation
8 *
9 * This file is part of VirtualBox Open Source Edition (OSE), as
10 * available from http://www.virtualbox.org. This file is free software;
11 * you can redistribute it and/or modify it under the terms of the GNU
12 * General Public License (GPL) as published by the Free Software
13 * Foundation, in version 2 as it comes in the "COPYING" file of the
14 * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
15 * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
16 */
17
18#ifndef ____H_GLOBAL
19#define ____H_GLOBAL
20
21/* interface definitions */
22#include "VBox/com/VirtualBox.h"
23
24#include <VBox/ostypes.h>
25
26#include <iprt/types.h>
27
28#define VBOXOSHINT_NONE 0
29#define VBOXOSHINT_64BIT RT_BIT(0)
30#define VBOXOSHINT_HWVIRTEX RT_BIT(1)
31#define VBOXOSHINT_IOAPIC RT_BIT(2)
32#define VBOXOSHINT_EFI RT_BIT(3)
33#define VBOXOSHINT_PAE RT_BIT(4)
34#define VBOXOSHINT_USBHID RT_BIT(5)
35#define VBOXOSHINT_HPET RT_BIT(6)
36#define VBOXOSHINT_USBTABLET RT_BIT(7)
37#define VBOXOSHINT_RTCUTC RT_BIT(8)
38#define VBOXOSHINT_ACCEL2D RT_BIT(9)
39#define VBOXOSHINT_ACCEL3D RT_BIT(10)
40#define VBOXOSHINT_FLOPPY RT_BIT(11)
41#define VBOXOSHINT_NOUSB RT_BIT(12)
42
43/** The VBoxVRDP kludge extension pack name.
44 *
45 * This is not a valid extension pack name (dashes are not allowed), and
46 * hence will not conflict with real extension packs.
47 */
48#define VBOXVRDP_KLUDGE_EXTPACK_NAME "Built-in-VBoxVRDP"
49
50/**
51 * Contains global static definitions that can be referenced by all COM classes
52 * regardless of the apartment.
53 */
54class Global
55{
56public:
57
58 /** Represents OS Type <-> string mappings. */
59 struct OSType
60 {
61 const char *familyId; /* utf-8 */
62 const char *familyDescription; /* utf-8 */
63 const char *id; /* utf-8, VM config file value */
64 const char *description; /* utf-8 */
65 const VBOXOSTYPE osType;
66 const uint32_t osHint;
67 const uint32_t recommendedRAM;
68 const uint32_t recommendedVRAM;
69 const uint64_t recommendedHDD;
70 const NetworkAdapterType_T networkAdapterType;
71 const uint32_t numSerialEnabled;
72 const StorageControllerType_T dvdStorageControllerType;
73 const StorageBus_T dvdStorageBusType;
74 const StorageControllerType_T hdStorageControllerType;
75 const StorageBus_T hdStorageBusType;
76 const ChipsetType_T chipsetType;
77 const AudioControllerType_T audioControllerType;
78 };
79
80 static const OSType sOSTypes[];
81 static uint32_t cOSTypes;
82
83 /**
84 * Maps VBOXOSTYPE to the OS type which is used in VM configs.
85 */
86 static const char *OSTypeId(VBOXOSTYPE aOSType);
87
88 /**
89 * Get the network adapter limit for each chipset type.
90 */
91 static uint32_t getMaxNetworkAdapters(ChipsetType_T aChipsetType);
92
93 /**
94 * Returns @c true if the given machine state is an online state. This is a
95 * recommended way to detect if the VM is online (being executed in a
96 * dedicated process) or not. Note that some online states are also
97 * transitional states (see #IsTransitional()).
98 *
99 * @remarks Saving may actually be an offline state according to the
100 * documentation (offline snapshot).
101 */
102 static bool IsOnline(MachineState_T aState)
103 {
104#if 0
105 return aState >= MachineState_FirstOnline &&
106 aState <= MachineState_LastOnline;
107#else
108 switch (aState)
109 {
110 case MachineState_Running:
111 case MachineState_Paused:
112 case MachineState_Teleporting:
113 case MachineState_LiveSnapshotting:
114 case MachineState_Stuck:
115 case MachineState_Starting:
116 case MachineState_Stopping:
117 case MachineState_Saving:
118 case MachineState_Restoring:
119 case MachineState_TeleportingPausedVM:
120 case MachineState_TeleportingIn:
121 return true;
122 default:
123 return false;
124 }
125#endif
126 }
127
128 /**
129 * Returns @c true if the given machine state is a transient state. This is
130 * a recommended way to detect if the VM is performing some potentially
131 * lengthy operation (such as starting, stopping, saving, deleting
132 * snapshot, etc.). Note some (but not all) transitional states are also
133 * online states (see #IsOnline()).
134 */
135 static bool IsTransient(MachineState_T aState)
136 {
137#if 0
138 return aState >= MachineState_FirstTransient &&
139 aState <= MachineState_LastTransient;
140#else
141 switch (aState)
142 {
143 case MachineState_Teleporting:
144 case MachineState_LiveSnapshotting:
145 case MachineState_Starting:
146 case MachineState_Stopping:
147 case MachineState_Saving:
148 case MachineState_Restoring:
149 case MachineState_TeleportingPausedVM:
150 case MachineState_TeleportingIn:
151 case MachineState_RestoringSnapshot:
152 case MachineState_DeletingSnapshot:
153 case MachineState_SettingUp:
154 return true;
155 default:
156 return false;
157 }
158#endif
159 }
160
161 /**
162 * Shortcut to <tt>IsOnline(aState) || IsTransient(aState)</tt>. When it returns
163 * @false, the VM is turned off (no VM process) and not busy with
164 * another exclusive operation.
165 */
166 static bool IsOnlineOrTransient(MachineState_T aState)
167 {
168 return IsOnline(aState) || IsTransient(aState);
169 }
170
171 /**
172 * Stringify a machine state.
173 *
174 * @returns Pointer to a read only string.
175 * @param aState Valid machine state.
176 */
177 static const char *stringifyMachineState(MachineState_T aState);
178
179 /**
180 * Stringify a session state.
181 *
182 * @returns Pointer to a read only string.
183 * @param aState Valid session state.
184 */
185 static const char *stringifySessionState(SessionState_T aState);
186
187 /**
188 * Stringify a device type.
189 *
190 * @returns Pointer to a read only string.
191 * @param aType The device type.
192 */
193 static const char *stringifyDeviceType(DeviceType_T aType);
194
195 /**
196 * Try convert a COM status code to a VirtualBox status code (VBox/err.h).
197 *
198 * @returns VBox status code.
199 * @param aComStatus COM status code.
200 */
201 static int vboxStatusCodeFromCOM(HRESULT aComStatus);
202
203 /**
204 * Try convert a VirtualBox status code (VBox/err.h) to a COM status code.
205 *
206 * This is mainly intended for dealing with vboxStatusCodeFromCOM() return
207 * values. If used on anything else, it won't be able to cope with most of the
208 * input!
209 *
210 * @returns COM status code.
211 * @param aVBoxStatus VBox status code.
212 */
213 static HRESULT vboxStatusCodeToCOM(int aVBoxStatus);
214};
215
216#endif /* !____H_GLOBAL */
217/* vi: set tabstop=4 shiftwidth=4 expandtab: */
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