VirtualBox

source: vbox/trunk/src/VBox/Main/src-all/Global.cpp@ 39650

Last change on this file since 39650 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: 36.1 KB
Line 
1/* $Id: Global.cpp 39248 2011-11-09 12:29:53Z vboxsync $ */
2/** @file
3 *
4 * VirtualBox COM global definitions
5 *
6 * NOTE: This file is part of both VBoxC.dll and VBoxSVC.exe.
7 */
8
9/*
10 * Copyright (C) 2008-2011 Oracle Corporation
11 *
12 * This file is part of VirtualBox Open Source Edition (OSE), as
13 * available from http://www.virtualbox.org. This file is free software;
14 * you can redistribute it and/or modify it under the terms of the GNU
15 * General Public License (GPL) as published by the Free Software
16 * Foundation, in version 2 as it comes in the "COPYING" file of the
17 * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
18 * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
19 */
20
21#include "Global.h"
22
23#include <iprt/assert.h>
24#include <iprt/string.h>
25#include <VBox/err.h>
26
27/* static */
28const Global::OSType Global::sOSTypes[] =
29{
30 /* NOTE1: we assume that unknown is always the first entry!
31 * NOTE2: please use powers of 2 when specifying the size of harddisks since
32 * '2GB' looks better than '1.95GB' (= 2000MB) */
33 { "Other", "Other", "Other", "Other/Unknown",
34 VBOXOSTYPE_Unknown, VBOXOSHINT_NONE,
35 64, 4, 2 * _1G64, NetworkAdapterType_Am79C973, 0, StorageControllerType_PIIX4, StorageBus_IDE,
36 StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 },
37 { "Windows", "Microsoft Windows", "Windows31", "Windows 3.1",
38 VBOXOSTYPE_Win31, VBOXOSHINT_NONE | VBOXOSHINT_FLOPPY,
39 32, 4, 1 * _1G64, NetworkAdapterType_Am79C973, 0, StorageControllerType_PIIX4, StorageBus_IDE,
40 StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_SB16 },
41 { "Windows", "Microsoft Windows", "Windows95", "Windows 95",
42 VBOXOSTYPE_Win95, VBOXOSHINT_NONE,
43 64, 4, 2 * _1G64, NetworkAdapterType_Am79C973, 0, StorageControllerType_PIIX4, StorageBus_IDE,
44 StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 },
45 { "Windows", "Microsoft Windows", "Windows98", "Windows 98",
46 VBOXOSTYPE_Win98, VBOXOSHINT_NONE,
47 64, 4, 2 * _1G64, NetworkAdapterType_Am79C973, 0, StorageControllerType_PIIX4, StorageBus_IDE,
48 StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 },
49 { "Windows", "Microsoft Windows", "WindowsMe", "Windows ME",
50 VBOXOSTYPE_WinMe, VBOXOSHINT_NONE,
51 64, 4, 4 * _1G64, NetworkAdapterType_Am79C973, 0, StorageControllerType_PIIX4, StorageBus_IDE,
52 StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 },
53 { "Windows", "Microsoft Windows", "WindowsNT4", "Windows NT 4",
54 VBOXOSTYPE_WinNT4, VBOXOSHINT_NONE,
55 128, 16, 2 * _1G64, NetworkAdapterType_Am79C973, 0, StorageControllerType_PIIX4, StorageBus_IDE,
56 StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_SB16 },
57 { "Windows", "Microsoft Windows", "Windows2000", "Windows 2000",
58 VBOXOSTYPE_Win2k, VBOXOSHINT_NONE | VBOXOSHINT_USBTABLET,
59 168, 16, 4 * _1G64, NetworkAdapterType_Am79C973, 0, StorageControllerType_PIIX4, StorageBus_IDE,
60 StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 },
61 { "Windows", "Microsoft Windows", "WindowsXP", "Windows XP",
62 VBOXOSTYPE_WinXP, VBOXOSHINT_NONE | VBOXOSHINT_USBTABLET,
63 192, 16, 10 * _1G64, NetworkAdapterType_Am79C973, 0, StorageControllerType_PIIX4, StorageBus_IDE,
64 StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 },
65 { "Windows", "Microsoft Windows", "WindowsXP_64", "Windows XP (64 bit)",
66 VBOXOSTYPE_WinXP_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_USBTABLET,
67 192, 16, 10 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
68 StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 },
69 { "Windows", "Microsoft Windows", "Windows2003", "Windows 2003",
70 VBOXOSTYPE_Win2k3, VBOXOSHINT_NONE | VBOXOSHINT_USBTABLET,
71 256, 16, 20 * _1G64, NetworkAdapterType_Am79C973, 0, StorageControllerType_PIIX4, StorageBus_IDE,
72 StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 },
73 { "Windows", "Microsoft Windows", "Windows2003_64", "Windows 2003 (64 bit)",
74 VBOXOSTYPE_Win2k3_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_USBTABLET,
75 256, 16, 20 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
76 StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_HDA },
77 { "Windows", "Microsoft Windows", "WindowsVista", "Windows Vista",
78 VBOXOSTYPE_WinVista, VBOXOSHINT_NONE | VBOXOSHINT_USBTABLET,
79 512, 16, 20 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
80 StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_HDA },
81 { "Windows", "Microsoft Windows", "WindowsVista_64", "Windows Vista (64 bit)",
82 VBOXOSTYPE_WinVista_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_USBTABLET,
83 512, 16, 20 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
84 StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_HDA },
85 { "Windows", "Microsoft Windows", "Windows2008", "Windows 2008",
86 VBOXOSTYPE_Win2k8, VBOXOSHINT_NONE | VBOXOSHINT_USBTABLET,
87 512, 16, 20 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
88 StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_HDA },
89 { "Windows", "Microsoft Windows", "Windows2008_64", "Windows 2008 (64 bit)",
90 VBOXOSTYPE_Win2k8_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_USBTABLET,
91 512, 16, 20 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
92 StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_HDA },
93 { "Windows", "Microsoft Windows", "Windows7", "Windows 7",
94 VBOXOSTYPE_Win7, VBOXOSHINT_NONE | VBOXOSHINT_USBTABLET,
95 512, 16, 20 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
96 StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_HDA },
97 { "Windows", "Microsoft Windows", "Windows7_64", "Windows 7 (64 bit)",
98 VBOXOSTYPE_Win7_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_USBTABLET,
99 512, 16, 20 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
100 StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_HDA },
101 { "Windows", "Microsoft Windows", "Windows8", "Windows 8",
102 VBOXOSTYPE_Win8, VBOXOSHINT_NONE | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_USBTABLET | VBOXOSHINT_ACCEL3D,
103 1024,128, 20 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
104 StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_HDA },
105 { "Windows", "Microsoft Windows", "Windows8_64", "Windows 8 (64 bit)",
106 VBOXOSTYPE_Win8_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_USBTABLET | VBOXOSHINT_ACCEL3D,
107 1536,128, 20 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
108 StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_HDA },
109 { "Windows", "Microsoft Windows", "WindowsNT", "Other Windows",
110 VBOXOSTYPE_WinNT, VBOXOSHINT_NONE,
111 512, 16, 20 * _1G64, NetworkAdapterType_Am79C973, 0, StorageControllerType_PIIX4, StorageBus_IDE,
112 StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 },
113 { "Linux", "Linux", "Linux22", "Linux 2.2",
114 VBOXOSTYPE_Linux22, VBOXOSHINT_RTCUTC,
115 64, 4, 2 * _1G64, NetworkAdapterType_Am79C973, 0, StorageControllerType_PIIX4, StorageBus_IDE,
116 StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 },
117 { "Linux", "Linux", "Linux24", "Linux 2.4",
118 VBOXOSTYPE_Linux24, VBOXOSHINT_RTCUTC,
119 128, 4, 4 * _1G64, NetworkAdapterType_Am79C973, 0, StorageControllerType_PIIX4, StorageBus_IDE,
120 StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 },
121 { "Linux", "Linux", "Linux24_64", "Linux 2.4 (64 bit)",
122 VBOXOSTYPE_Linux24_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_RTCUTC,
123 128, 4, 4 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
124 StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 },
125 { "Linux", "Linux", "Linux26", "Linux 2.6",
126 VBOXOSTYPE_Linux26, VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET,
127 256, 4, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
128 StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 },
129 { "Linux", "Linux", "Linux26_64", "Linux 2.6 (64 bit)",
130 VBOXOSTYPE_Linux26_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET,
131 256, 4, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
132 StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 },
133 { "Linux", "Linux", "ArchLinux", "Arch Linux",
134 VBOXOSTYPE_ArchLinux, VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET,
135 256, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
136 StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 },
137 { "Linux", "Linux", "ArchLinux_64", "Arch Linux (64 bit)",
138 VBOXOSTYPE_ArchLinux_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET,
139 256, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
140 StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 },
141 { "Linux", "Linux", "Debian", "Debian",
142 VBOXOSTYPE_Debian, VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET,
143 384, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
144 StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 },
145 { "Linux", "Linux", "Debian_64", "Debian (64 bit)",
146 VBOXOSTYPE_Debian_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET,
147 384, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
148 StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97},
149 { "Linux", "Linux", "OpenSUSE", "openSUSE",
150 VBOXOSTYPE_OpenSUSE, VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET,
151 512, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
152 StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 },
153 { "Linux", "Linux", "OpenSUSE_64", "openSUSE (64 bit)",
154 VBOXOSTYPE_OpenSUSE_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET,
155 512, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
156 StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 },
157 { "Linux", "Linux", "Fedora", "Fedora",
158 VBOXOSTYPE_FedoraCore, VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET,
159 768, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
160 StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 },
161 { "Linux", "Linux", "Fedora_64", "Fedora (64 bit)",
162 VBOXOSTYPE_FedoraCore_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET,
163 768, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
164 StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 },
165 { "Linux", "Linux", "Gentoo", "Gentoo",
166 VBOXOSTYPE_Gentoo, VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET,
167 256, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
168 StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 },
169 { "Linux", "Linux", "Gentoo_64", "Gentoo (64 bit)",
170 VBOXOSTYPE_Gentoo_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET,
171 256, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
172 StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 },
173 { "Linux", "Linux", "Mandriva", "Mandriva",
174 VBOXOSTYPE_Mandriva, VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET,
175 512, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
176 StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 },
177 { "Linux", "Linux", "Mandriva_64", "Mandriva (64 bit)",
178 VBOXOSTYPE_Mandriva_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET,
179 512, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
180 StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 },
181 { "Linux", "Linux", "RedHat", "Red Hat",
182 VBOXOSTYPE_RedHat, VBOXOSHINT_RTCUTC | VBOXOSHINT_PAE,
183 512, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
184 StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 },
185 { "Linux", "Linux", "RedHat_64", "Red Hat (64 bit)",
186 VBOXOSTYPE_RedHat_x64, VBOXOSHINT_64BIT | VBOXOSHINT_PAE | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_RTCUTC,
187 512, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
188 StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 },
189 { "Linux", "Linux", "Turbolinux", "Turbolinux",
190 VBOXOSTYPE_Turbolinux, VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET,
191 384, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
192 StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 },
193 { "Linux", "Linux", "Turbolinux_64", "Turbolinux (64 bit)",
194 VBOXOSTYPE_Turbolinux_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET,
195 384, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
196 StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 },
197 { "Linux", "Linux", "Ubuntu", "Ubuntu",
198 VBOXOSTYPE_Ubuntu, VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET,
199 512, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
200 StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 },
201 { "Linux", "Linux", "Ubuntu_64", "Ubuntu (64 bit)",
202 VBOXOSTYPE_Ubuntu_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET,
203 512, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
204 StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 },
205 { "Linux", "Linux", "Xandros", "Xandros",
206 VBOXOSTYPE_Xandros, VBOXOSHINT_RTCUTC,
207 256, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
208 StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 },
209 { "Linux", "Linux", "Xandros_64", "Xandros (64 bit)",
210 VBOXOSTYPE_Xandros_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_RTCUTC,
211 256, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
212 StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 },
213 { "Linux", "Linux", "Oracle", "Oracle",
214 VBOXOSTYPE_Oracle, VBOXOSHINT_RTCUTC | VBOXOSHINT_PAE,
215 512, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
216 StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 },
217 { "Linux", "Linux", "Oracle_64", "Oracle (64 bit)",
218 VBOXOSTYPE_Oracle_x64, VBOXOSHINT_64BIT | VBOXOSHINT_PAE | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_RTCUTC,
219 512, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
220 StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 },
221 { "Linux", "Linux", "Linux", "Other Linux",
222 VBOXOSTYPE_Linux, VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET,
223 256, 12, 8 * _1G64, NetworkAdapterType_Am79C973, 0, StorageControllerType_PIIX4, StorageBus_IDE,
224 StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 },
225 { "Solaris", "Solaris", "Solaris", "Oracle Solaris 10 5/09 and earlier",
226 VBOXOSTYPE_Solaris, VBOXOSHINT_NONE,
227 768, 12, 16 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
228 StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 },
229 { "Solaris", "Solaris", "Solaris_64", "Oracle Solaris 10 5/09 and earlier (64 bit)",
230 VBOXOSTYPE_Solaris_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC,
231 1536, 12, 16 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
232 StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 },
233 { "Solaris", "Solaris", "OpenSolaris", "Oracle Solaris 10 10/09 and later",
234 VBOXOSTYPE_OpenSolaris, VBOXOSHINT_USBTABLET,
235 768, 12, 16 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_IntelAhci, StorageBus_SATA,
236 StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 },
237 { "Solaris", "Solaris", "OpenSolaris_64", "Oracle Solaris 10 10/09 and later (64 bit)",
238 VBOXOSTYPE_OpenSolaris_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_USBTABLET,
239 1536, 12, 16 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_IntelAhci, StorageBus_SATA,
240 StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 },
241 { "Solaris", "Solaris", "Solaris11_64", "Oracle Solaris 11 (64 bit)",
242 VBOXOSTYPE_Solaris11_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_USBTABLET,
243 1536, 12, 16 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_IntelAhci, StorageBus_SATA,
244 StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 },
245 { "BSD", "BSD", "FreeBSD", "FreeBSD",
246 VBOXOSTYPE_FreeBSD, VBOXOSHINT_NONE,
247 128, 4, 2 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
248 StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 },
249 { "BSD", "BSD", "FreeBSD_64", "FreeBSD (64 bit)",
250 VBOXOSTYPE_FreeBSD_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC,
251 128, 4, 2 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
252 StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 },
253 { "BSD", "BSD", "OpenBSD", "OpenBSD",
254 VBOXOSTYPE_OpenBSD, VBOXOSHINT_HWVIRTEX,
255 64, 4, 2 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
256 StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 },
257 { "BSD", "BSD", "OpenBSD_64", "OpenBSD (64 bit)",
258 VBOXOSTYPE_OpenBSD_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC,
259 64, 4, 2 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
260 StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 },
261 { "BSD", "BSD", "NetBSD", "NetBSD",
262 VBOXOSTYPE_NetBSD, VBOXOSHINT_NONE,
263 64, 4, 2 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
264 StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 },
265 { "BSD", "BSD", "NetBSD_64", "NetBSD (64 bit)",
266 VBOXOSTYPE_NetBSD_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC,
267 64, 4, 2 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
268 StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 },
269 { "OS2", "IBM OS/2", "OS2Warp3", "OS/2 Warp 3",
270 VBOXOSTYPE_OS2Warp3, VBOXOSHINT_HWVIRTEX | VBOXOSHINT_FLOPPY,
271 48, 4, 1 * _1G64, NetworkAdapterType_Am79C973, 1, StorageControllerType_PIIX4, StorageBus_IDE,
272 StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_SB16 },
273 { "OS2", "IBM OS/2", "OS2Warp4", "OS/2 Warp 4",
274 VBOXOSTYPE_OS2Warp4, VBOXOSHINT_HWVIRTEX | VBOXOSHINT_FLOPPY,
275 64, 4, 2 * _1G64, NetworkAdapterType_Am79C973, 1, StorageControllerType_PIIX4, StorageBus_IDE,
276 StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_SB16 },
277 { "OS2", "IBM OS/2", "OS2Warp45", "OS/2 Warp 4.5",
278 VBOXOSTYPE_OS2Warp45, VBOXOSHINT_HWVIRTEX | VBOXOSHINT_FLOPPY,
279 128, 4, 2 * _1G64, NetworkAdapterType_Am79C973, 1, StorageControllerType_PIIX4, StorageBus_IDE,
280 StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_SB16 },
281 { "OS2", "IBM OS/2", "OS2eCS", "eComStation",
282 VBOXOSTYPE_ECS, VBOXOSHINT_HWVIRTEX,
283 256, 4, 2 * _1G64, NetworkAdapterType_Am79C973, 1, StorageControllerType_PIIX4, StorageBus_IDE,
284 StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 },
285 { "OS2", "IBM OS/2", "OS2", "Other OS/2",
286 VBOXOSTYPE_OS2, VBOXOSHINT_HWVIRTEX | VBOXOSHINT_FLOPPY | VBOXOSHINT_NOUSB,
287 96, 4, 2 * _1G64, NetworkAdapterType_Am79C973, 1, StorageControllerType_PIIX4, StorageBus_IDE,
288 StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_SB16 },
289 { "MacOS", "Mac OS X", "MacOS", "Mac OS X",
290 VBOXOSTYPE_MacOS, VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_EFI | VBOXOSHINT_PAE | VBOXOSHINT_USBHID | VBOXOSHINT_HPET | VBOXOSHINT_USBTABLET,
291 1024, 4, 20 * _1G64, NetworkAdapterType_I82543GC, 0,
292 StorageControllerType_ICH6, StorageBus_IDE, StorageControllerType_IntelAhci, StorageBus_SATA,
293 ChipsetType_ICH9, AudioControllerType_HDA },
294 { "MacOS", "Mac OS X", "MacOS_64", "Mac OS X (64 bit)",
295 VBOXOSTYPE_MacOS_x64, VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_EFI | VBOXOSHINT_PAE | VBOXOSHINT_64BIT | VBOXOSHINT_USBHID | VBOXOSHINT_HPET | VBOXOSHINT_USBTABLET,
296 1024, 4, 20 * _1G64, NetworkAdapterType_I82543GC, 0,
297 StorageControllerType_ICH6, StorageBus_IDE, StorageControllerType_IntelAhci, StorageBus_SATA,
298 ChipsetType_ICH9, AudioControllerType_HDA },
299 { "Other", "Other", "DOS", "DOS",
300 VBOXOSTYPE_DOS, VBOXOSHINT_NONE | VBOXOSHINT_FLOPPY | VBOXOSHINT_NOUSB,
301 32, 4, 500 * _1M, NetworkAdapterType_Am79C973, 0, StorageControllerType_PIIX4, StorageBus_IDE,
302 StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_SB16 },
303 { "Other", "Other", "Netware", "Netware",
304 VBOXOSTYPE_Netware, VBOXOSHINT_HWVIRTEX,
305 512, 4, 4 * _1G64, NetworkAdapterType_Am79C973, 0, StorageControllerType_PIIX4, StorageBus_IDE,
306 StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 },
307 { "Other", "Other", "L4", "L4",
308 VBOXOSTYPE_L4, VBOXOSHINT_NONE,
309 64, 4, 2 * _1G64, NetworkAdapterType_Am79C973, 0, StorageControllerType_PIIX4, StorageBus_IDE,
310 StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 },
311 { "Other", "Other", "QNX", "QNX",
312 VBOXOSTYPE_QNX, VBOXOSHINT_HWVIRTEX,
313 512, 4, 4 * _1G64, NetworkAdapterType_Am79C973, 0, StorageControllerType_PIIX4, StorageBus_IDE,
314 StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 },
315 { "Other", "Other", "JRockitVE", "JRockitVE",
316 VBOXOSTYPE_JRockitVE, VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_PAE,
317 1024, 4, 8 * _1G64, NetworkAdapterType_I82545EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
318 StorageControllerType_BusLogic, StorageBus_SCSI, ChipsetType_PIIX3, AudioControllerType_AC97 },
319};
320
321uint32_t Global::cOSTypes = RT_ELEMENTS(Global::sOSTypes);
322
323/**
324 * Returns an OS Type ID for the given VBOXOSTYPE value.
325 *
326 * The returned ID will correspond to the IGuestOSType::id value of one of the
327 * objects stored in the IVirtualBox::guestOSTypes
328 * (VirtualBoxImpl::COMGETTER(GuestOSTypes)) collection.
329 */
330/* static */
331const char *Global::OSTypeId(VBOXOSTYPE aOSType)
332{
333 for (size_t i = 0; i < RT_ELEMENTS(sOSTypes); ++i)
334 {
335 if (sOSTypes[i].osType == aOSType)
336 return sOSTypes[i].id;
337 }
338
339 return sOSTypes[0].id;
340}
341
342/*static*/ uint32_t Global::getMaxNetworkAdapters(ChipsetType_T aChipsetType)
343{
344 switch (aChipsetType)
345 {
346 case ChipsetType_PIIX3:
347 return 8;
348 case ChipsetType_ICH9:
349 return 36;
350 default:
351 return 0;
352 }
353}
354
355/*static*/ const char *
356Global::stringifyMachineState(MachineState_T aState)
357{
358 switch (aState)
359 {
360 case MachineState_Null: return "Null";
361 case MachineState_PoweredOff: return "PoweredOff";
362 case MachineState_Saved: return "Saved";
363 case MachineState_Teleported: return "Teleported";
364 case MachineState_Aborted: return "Aborted";
365 case MachineState_Running: return "Running";
366 case MachineState_Paused: return "Paused";
367 case MachineState_Stuck: return "GuruMeditation";
368 case MachineState_Teleporting: return "Teleporting";
369 case MachineState_LiveSnapshotting: return "LiveSnapshotting";
370 case MachineState_Starting: return "Starting";
371 case MachineState_Stopping: return "Stopping";
372 case MachineState_Saving: return "Saving";
373 case MachineState_Restoring: return "Restoring";
374 case MachineState_TeleportingPausedVM: return "TeleportingPausedVM";
375 case MachineState_TeleportingIn: return "TeleportingIn";
376 case MachineState_FaultTolerantSyncing: return "FaultTolerantSyncing";
377 case MachineState_DeletingSnapshotOnline: return "DeletingSnapshotOnline";
378 case MachineState_DeletingSnapshotPaused: return "DeletingSnapshotPaused";
379 case MachineState_RestoringSnapshot: return "RestoringSnapshot";
380 case MachineState_DeletingSnapshot: return "DeletingSnapshot";
381 case MachineState_SettingUp: return "SettingUp";
382 default:
383 {
384 AssertMsgFailed(("%d (%#x)\n", aState, aState));
385 static char s_szMsg[48];
386 RTStrPrintf(s_szMsg, sizeof(s_szMsg), "InvalidState-0x%08x\n", aState);
387 return s_szMsg;
388 }
389 }
390}
391
392/*static*/ const char *
393Global::stringifySessionState(SessionState_T aState)
394{
395 switch (aState)
396 {
397 case SessionState_Null: return "Null";
398 case SessionState_Unlocked: return "Unlocked";
399 case SessionState_Locked: return "Locked";
400 case SessionState_Spawning: return "Spawning";
401 case SessionState_Unlocking: return "Unlocking";
402 default:
403 {
404 AssertMsgFailed(("%d (%#x)\n", aState, aState));
405 static char s_szMsg[48];
406 RTStrPrintf(s_szMsg, sizeof(s_szMsg), "InvalidState-0x%08x\n", aState);
407 return s_szMsg;
408 }
409 }
410}
411
412/*static*/ const char *
413Global::stringifyDeviceType(DeviceType_T aType)
414{
415 switch (aType)
416 {
417 case DeviceType_Null: return "Null";
418 case DeviceType_Floppy: return "Floppy";
419 case DeviceType_DVD: return "DVD";
420 case DeviceType_HardDisk: return "HardDisk";
421 case DeviceType_Network: return "Network";
422 case DeviceType_USB: return "USB";
423 case DeviceType_SharedFolder: return "ShardFolder";
424 default:
425 {
426 AssertMsgFailed(("%d (%#x)\n", aType, aType));
427 static char s_szMsg[48];
428 RTStrPrintf(s_szMsg, sizeof(s_szMsg), "InvalidType-0x%08x\n", aType);
429 return s_szMsg;
430 }
431 }
432}
433
434/*static*/ int
435Global::vboxStatusCodeFromCOM(HRESULT aComStatus)
436{
437 switch (aComStatus)
438 {
439 case S_OK: return VINF_SUCCESS;
440
441 /* Standard COM status codes. See also RTErrConvertFromDarwinCOM */
442 case E_UNEXPECTED: return VERR_COM_UNEXPECTED;
443 case E_NOTIMPL: return VERR_NOT_IMPLEMENTED;
444 case E_OUTOFMEMORY: return VERR_NO_MEMORY;
445 case E_INVALIDARG: return VERR_INVALID_PARAMETER;
446 case E_NOINTERFACE: return VERR_NOT_SUPPORTED;
447 case E_POINTER: return VERR_INVALID_POINTER;
448#ifdef E_HANDLE
449 case E_HANDLE: return VERR_INVALID_HANDLE;
450#endif
451 case E_ABORT: return VERR_CANCELLED;
452 case E_FAIL: return VERR_GENERAL_FAILURE;
453 case E_ACCESSDENIED: return VERR_ACCESS_DENIED;
454
455 /* VirtualBox status codes */
456 case VBOX_E_OBJECT_NOT_FOUND: return VERR_COM_OBJECT_NOT_FOUND;
457 case VBOX_E_INVALID_VM_STATE: return VERR_COM_INVALID_VM_STATE;
458 case VBOX_E_VM_ERROR: return VERR_COM_VM_ERROR;
459 case VBOX_E_FILE_ERROR: return VERR_COM_FILE_ERROR;
460 case VBOX_E_IPRT_ERROR: return VERR_COM_IPRT_ERROR;
461 case VBOX_E_PDM_ERROR: return VERR_COM_PDM_ERROR;
462 case VBOX_E_INVALID_OBJECT_STATE: return VERR_COM_INVALID_OBJECT_STATE;
463 case VBOX_E_HOST_ERROR: return VERR_COM_HOST_ERROR;
464 case VBOX_E_NOT_SUPPORTED: return VERR_COM_NOT_SUPPORTED;
465 case VBOX_E_XML_ERROR: return VERR_COM_XML_ERROR;
466 case VBOX_E_INVALID_SESSION_STATE: return VERR_COM_INVALID_SESSION_STATE;
467 case VBOX_E_OBJECT_IN_USE: return VERR_COM_OBJECT_IN_USE;
468
469 default:
470 if (SUCCEEDED(aComStatus))
471 return VINF_SUCCESS;
472 /** @todo Check for the win32 facility and use the
473 * RTErrConvertFromWin32 function on windows. */
474 return VERR_UNRESOLVED_ERROR;
475 }
476}
477
478
479/*static*/ HRESULT
480Global::vboxStatusCodeToCOM(int aVBoxStatus)
481{
482 switch (aVBoxStatus)
483 {
484 case VINF_SUCCESS: return S_OK;
485
486 /* Standard COM status codes. */
487 case VERR_COM_UNEXPECTED: return E_UNEXPECTED;
488 case VERR_NOT_IMPLEMENTED: return E_NOTIMPL;
489 case VERR_NO_MEMORY: return E_OUTOFMEMORY;
490 case VERR_INVALID_PARAMETER: return E_INVALIDARG;
491 case VERR_NOT_SUPPORTED: return E_NOINTERFACE;
492 case VERR_INVALID_POINTER: return E_POINTER;
493#ifdef E_HANDLE
494 case VERR_INVALID_HANDLE: return E_HANDLE;
495#endif
496 case VERR_CANCELLED: return E_ABORT;
497 case VERR_GENERAL_FAILURE: return E_FAIL;
498 case VERR_ACCESS_DENIED: return E_ACCESSDENIED;
499
500 /* VirtualBox COM status codes */
501 case VERR_COM_OBJECT_NOT_FOUND: return VBOX_E_OBJECT_NOT_FOUND;
502 case VERR_COM_INVALID_VM_STATE: return VBOX_E_INVALID_VM_STATE;
503 case VERR_COM_VM_ERROR: return VBOX_E_VM_ERROR;
504 case VERR_COM_FILE_ERROR: return VBOX_E_FILE_ERROR;
505 case VERR_COM_IPRT_ERROR: return VBOX_E_IPRT_ERROR;
506 case VERR_COM_PDM_ERROR: return VBOX_E_PDM_ERROR;
507 case VERR_COM_INVALID_OBJECT_STATE: return VBOX_E_INVALID_OBJECT_STATE;
508 case VERR_COM_HOST_ERROR: return VBOX_E_HOST_ERROR;
509 case VERR_COM_NOT_SUPPORTED: return VBOX_E_NOT_SUPPORTED;
510 case VERR_COM_XML_ERROR: return VBOX_E_XML_ERROR;
511 case VERR_COM_INVALID_SESSION_STATE: return VBOX_E_INVALID_SESSION_STATE;
512 case VERR_COM_OBJECT_IN_USE: return VBOX_E_OBJECT_IN_USE;
513
514 /* Other errors. */
515 case VERR_UNRESOLVED_ERROR: return E_FAIL;
516
517 default:
518 AssertMsgFailed(("%Rrc\n", aVBoxStatus));
519 if (RT_SUCCESS(aVBoxStatus))
520 return S_OK;
521
522 /* try categorize it */
523 if ( aVBoxStatus < 0
524 && ( aVBoxStatus > -1000
525 || (aVBoxStatus < -22000 && aVBoxStatus > -32766) )
526 )
527 return VBOX_E_IPRT_ERROR;
528 if ( aVBoxStatus < VERR_PDM_NO_SUCH_LUN / 100 * 10
529 && aVBoxStatus > VERR_PDM_NO_SUCH_LUN / 100 * 10 - 100)
530 return VBOX_E_PDM_ERROR;
531 if ( aVBoxStatus <= -1000
532 && aVBoxStatus > -5000 /* wrong, but so what... */)
533 return VBOX_E_VM_ERROR;
534
535 return E_FAIL;
536 }
537}
538
539
540/* 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