VirtualBox

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

Last change on this file since 22178 was 21607, checked in by vboxsync, 15 years ago

Main: Enable a serial port for OS/2 guests by default.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Date Revision Author Id
File size: 3.9 KB
Line 
1/* $Id: Global.h 21607 2009-07-15 13:00:21Z vboxsync $ */
2
3/** @file
4 *
5 * VirtualBox COM global declarations
6 */
7
8/*
9 * Copyright (C) 2008 Sun Microsystems, Inc.
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 * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
20 * Clara, CA 95054 USA or visit http://www.sun.com if you need
21 * additional information or have any questions.
22 */
23
24#ifndef ____H_GLOBAL
25#define ____H_GLOBAL
26
27/* generated header */
28#include "SchemaDefs.h"
29
30/* interface definitions */
31#include "VBox/com/VirtualBox.h"
32
33#include <VBox/ostypes.h>
34
35#include <iprt/types.h>
36
37#define VBOXOSHINT_NONE 0
38#define VBOXOSHINT_64BIT RT_BIT(0)
39#define VBOXOSHINT_HWVIRTEX RT_BIT(1)
40#define VBOXOSHINT_IOAPIC RT_BIT(2)
41
42/**
43 * Contains global static definitions that can be referenced by all COM classes
44 * regardless of the apartment.
45 */
46class Global
47{
48public:
49
50 /** Represents OS Type <-> string mappings. */
51 struct OSType
52 {
53 const char *familyId; /* utf-8 */
54 const char *familyDescription; /* utf-8 */
55 const char *id; /* utf-8 */
56 const char *description; /* utf-8 */
57 const VBOXOSTYPE osType;
58 const uint32_t osHint;
59 const uint32_t recommendedRAM;
60 const uint32_t recommendedVRAM;
61 const uint32_t recommendedHDD;
62 const NetworkAdapterType_T networkAdapterType;
63 const uint32_t numSerialEnabled;
64 };
65
66 static const OSType sOSTypes [SchemaDefs::OSTypeId_COUNT];
67
68 static const char *OSTypeId (VBOXOSTYPE aOSType);
69
70 /**
71 * Returns @c true if the given machine state is an online state. This is a
72 * recommended way to detect if the VM is online (being executed in a
73 * dedicated process) or not. Note that some online states are also
74 * transitional states (see #IsTransitional()).
75 */
76 static bool IsOnline (MachineState_T aState)
77 {
78 return aState >= MachineState_FirstOnline &&
79 aState <= MachineState_LastOnline;
80 }
81
82 /**
83 * Returns @c true if the given machine state is a transient state. This is
84 * a recommended way to detect if the VM is performing some potentially
85 * lengthy operation (such as starting, stopping, saving, discarding
86 * snapshot, etc.). Note some (but not all) transitional states are also
87 * online states (see #IsOnline()).
88 */
89 static bool IsTransient (MachineState_T aState)
90 {
91 return aState >= MachineState_FirstTransient &&
92 aState <= MachineState_LastTransient;
93 }
94
95 /**
96 * Shortcut to <tt>IsOnline (aState) || IsTransient (aState)</tt>. When it
97 * returns @false, the VM is turned off (no VM process) and not busy with
98 * another exclusive operation.
99 */
100 static bool IsOnlineOrTransient (MachineState_T aState)
101 {
102 return IsOnline (aState) || IsTransient (aState);
103 }
104
105 /**
106 * Shortcut to <tt>IsOnline (aState) && !IsTransient (aState)</tt>. This is
107 * a recommended way to detect if the VM emulation thread is in action
108 * (either running, suspended, or stuck). When this method returns @false,
109 * then either the VM is not online or the emulation thread is being started
110 * or stopped, etc.
111 */
112 static bool IsActive (MachineState_T aState)
113 {
114 return IsOnline (aState) && !IsTransient (aState);
115 }
116};
117
118#endif /* ____H_GLOBAL */
119/* 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