VirtualBox

source: vbox/trunk/doc/VBox-doc.c@ 104429

Last change on this file since 104429 was 98103, checked in by vboxsync, 21 months ago

Copyright year updates by scm.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 8.4 KB
RevLine 
[6303]1/* $Id: VBox-doc.c 98103 2023-01-17 14:15:46Z vboxsync $ */
2/** @file
3 * VirtualBox Top Level Documentation File.
4 */
5
6/*
[98103]7 * Copyright (C) 2006-2023 Oracle and/or its affiliates.
[6303]8 *
[96407]9 * This file is part of VirtualBox base platform packages, as
10 * available from https://www.virtualbox.org.
11 *
12 * This program is free software; you can redistribute it and/or
13 * modify it under the terms of the GNU General Public License
14 * as published by the Free Software Foundation, in version 3 of the
15 * License.
16 *
17 * This program is distributed in the hope that it will be useful, but
18 * WITHOUT ANY WARRANTY; without even the implied warranty of
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
20 * General Public License for more details.
21 *
22 * You should have received a copy of the GNU General Public License
23 * along with this program; if not, see <https://www.gnu.org/licenses>.
24 *
25 * SPDX-License-Identifier: GPL-3.0-only
[6303]26 */
27
28
29/** @mainpage VirtualBox
30 *
31 * (add introduction here)
32 *
33 * @section pg_main_comp Components
34 *
[13001]35 * - VM / @ref pg_vmm "VMM" / GVM / @ref pg_gvmm "GVMM" - Virtual Machine
36 * Monitor.
37 * - @ref pg_cfgm
38 * - @ref pg_cpum
39 * - @ref pg_dbgf
[39685]40 * - @ref pg_dbgf_addr_space
41 * - @ref pg_dbgf_vmcore
42 * - @ref pg_dbgf_module
43 * - @ref pg_dbgc
[6303]44 * - VBoxDbg - Debugger GUI (Qt).
[58396]45 * - @ref grp_dis
[13001]46 * - @ref pg_em
[58094]47 * - @ref pg_gim
[58396]48 * - @ref pg_hm
[39685]49 * - @ref pg_iem
[81198]50 * - @ref pg_nem
[13001]51 * - @ref pg_gmm
52 * - @ref pg_mm
53 * - @ref pg_pgm
[39685]54 * - @ref pg_pgm_phys
55 * - @ref pg_pgm_pool
[13001]56 * - @ref pg_selm
57 * - @ref pg_iom
58 * - @ref pg_pdm
[6303]59 * - Devices / USB Devices, Drivers and their public interfaces.
60 * - Async I/O Completion API.
61 * - Async Task API.
62 * - Critical Section API.
63 * - Queue API.
64 * - Thread API.
[39685]65 * - @ref pg_pdm_block_cache
[13001]66 * - @ref pg_ssm
67 * - @ref pg_stam
68 * - @ref pg_tm
69 * - @ref pg_trpm
[39685]70 * - VMM docs:
71 * - @ref pg_vmm_guideline
72 * - @ref pg_raw
[6303]73 * - Pluggable Components (via PDM).
74 * - DevPCArch - PC Architecture Device (chipset, legacy ++).
75 * - DevPCBios - Basic Input Output System.
76 * - DevDMAC - DMA Controller.
77 * - DevPIC - Programmable Interrupt Controller.
78 * - DevPIT - Programmable Interval Timer (i8254).
79 * - DevRTC - Real Time Clock.
80 * - DevVGA - Video Graphic Array.
81 * - DevPCI - Peripheral Component Interface (Bus).
82 * - VBoxDev - Special PCI Device which serves as an interface between
83 * the VMM and the guest OS for the additions.
[89790]84 * - @ref pg_pdm_audio "Audio":
[89784]85 * - DevHda - Intel High Definition Audio Device Emulation.
86 * - DevIchAc97 - ICH AC'97 Device Emulation.
87 * - DevSB16 - SoundBlaster 16 Device Emulation.
88 * - DrvAudio - Intermediate driver.
89 * - DrvHostAudioAlsa - ALSA Host Audio Driver (Linux).
90 * - DrvHostAudioCoreAudio - Core Audio Host Audio Driver (macOS).
91 * - DrvHostAudioDebug - Debug Backend Driver.
92 * - DrvHostAudioDSound - DirectSound Host Audio Driver (Windows).
93 * - DrvHostAudioNull - NULL Backend Driver.
94 * - DrvHostAudioOss - Open Sound System Host Audio Driver (Linux,
95 * Solaris, ++).
96 * - DrvHostAudioPulseAudio - PulseAudio Host Audio Driver (Linux).
97 * - DrvHostAudioValidationKit - Validation Kit Test Driver.
98 * - DrvHostAudioWasApi - Windows Audio Session API Host Audio Driver.
[6303]99 * - Networking:
100 * - DevPCNet - AMD PCNet Device Emulation.
101 * - DevE1000 - Intel E1000 Device Emulation.
102 * - DevEEPROM - Intel E1000 EPROM Device Emulation.
103 * - SrvINetNetR0 - Internal Networking Ring-0 Service.
104 * - DevINIP - IP Stack Service for the internal networking.
105 * - DrvIntNet - Internal Networking Driver.
106 * - DrvNetSniffer - Wireshark Compatible Sniffer Driver (pass thru).
107 * - DrvNAT - Network Address Translation Driver.
108 * - DrvTAP - Host Interface Networking Driver.
109 * - Storage:
110 * - DevATA - ATA ((E)IDE) Device Emulation.
[39685]111 * - @ref pg_dev_ahci
[6303]112 * - DevFDC - Floppy Controller Device Emulation.
113 * - DrvBlock - Intermediate block driver.
114 * - DrvHostBase - Common code for the host drivers.
115 * - DrvHostDVD - Host DVD drive driver.
116 * - DrvHostFloppy - Host floppy drive driver.
117 * - DrvHostRawDisk - Host raw disk drive driver.
118 * - DrvMediaISO - ISO media driver.
119 * - DrvRawImage - Raw image driver (floppy images etc).
120 * - DrvVD - Intermediate Virtual Drive (Media) driver.
121 * - DrvVDI - VirtualBox Drive Image Container Driver.
122 * - DrvVmdk - VMDK Drive Image Container Driver.
[39685]123 * - USB:
124 * - @ref pg_dev_ohci
125 * - @ref pg_dev_ehci
126 * - @ref pg_dev_vusb
127 * - @ref pg_dev_vusb_old
[6303]128 * - Host Drivers.
129 * - SUPDRV - The Support driver (aka VBoxDrv).
[39685]130 * - @ref pg_sup
131 * - @ref pg_netflt
132 * - @ref pg_netadp
[6303]133 * - VBoxUSB - The USB support driver.
[13001]134 * - @ref pg_netflt
[39685]135 * - @ref pg_rawpci
[6303]136 * - Host Services.
[85607]137 * - @ref pg_hostclip
[39685]138 * - Shared Folders.
139 * - @ref pg_svc_guest_properties
140 * - @ref pg_svc_guest_control
141 * - Guest Additions.
142 * - VBoxGuest.
143 * - @ref pg_guest_lib
[58166]144 * - @ref pg_vgsvc
145 * - @ref pg_vgsvc_timesync
146 * - @ref pg_vgsvc_vminfo
147 * - @ref pg_vgsvc_vmstats
148 * - @ref pg_vgsvc_gstctrl
149 * - @ref pg_vgsvc_pagesharing
150 * - @ref pg_vgsvc_memballoon
151 * - @ref pg_vgsvc_cpuhotplug
152 * - @ref pg_vgsvc_automount
153 * - @ref pg_vgsvc_clipboard
[39685]154 * - VBoxControl.
[93422]155 * - Linux, Solaris and FreeBSD specific guest services and drivers.
156 * - @ref pg_vboxdrmcliet (Linux only).
157 * - VBoxClient.
158 * - VBoxVideo.
159 * - Windows Guests.
160 * - VBoxTray.
[39685]161 * - crOpenGL.
162 * - pam.
163 * - ...
164 * - Network Services:
165 * - @ref pg_net_dhcp
[58166]166 * - NAT
[39685]167 * - @ref pg_main
168 * - @ref pg_main_events
169 * - @ref pg_vrdb_usb
[41857]170 * - Frontends:
[65128]171 * - VirtualBox - The default Qt-based GUI.
[41857]172 * - VBoxHeadless - The headless frontend.
173 * - VBoxManage - The CLI.
174 * - VBoxShell - An interactive shell written in python.
175 * - VBoxSDL - A very simple GUI.
176 * - VBoxBFE - A bare metal edition which does not use COM/XPCOM (barely
177 * maintained atm).
[39685]178 * - IPRT - Runtime Library for hiding host OS differences.
[51346]179 * - Validation Kit:
[51368]180 * - @ref pg_validationkit_guideline
[60600]181 * - @ref pg_bs3kit
[68446]182 * - @ref pg_vbox_guideline
[6303]183 *
184 * @todo Make links to the components.
[41857]185 *
186 *
187 *
188 * @section Execution Contexts
189 *
190 * VirtualBox defines a number of different execution context, this can be
191 * confusing at first. So, to start with take a look at this diagram:
192 *
193 * @image html VMMContexts.png
194 *
195 * Context definitions:
196 * - Host context (HC) - This is the context where the host OS runs and
197 * runs VirtualBox within it. The absense of IN_RC and IN_GUEST
198 * indicates that we're in HC. IN_RING0 indicates ring-0 (kernel) and
199 * IN_RING3 indicates ring-3.
200 * - Raw-mode Context (RC) - This is the special VMM context where we
201 * execute the guest code directly on the CPU. Kernel code is patched
202 * and execute in ring-1 instead of ring-0 (ring compression). Ring-3
203 * code execute unmodified. Only VMMs use ring-1, so we don't need to
204 * worry about that (it's guarded against in the scheduler (EM)). We can
205 * in theory run ring-2 there, but since practially only only OS/2 uses
206 * ring-2, it is of little importance. The macro IN_RC indicates that
207 * we're compiling something for RC.
208 * Note! This used to be called GC (see below) earlier, so a bunch of RC
209 * things are using GC markers.
210 * - Guest Context (GC) - This is where the guest code is executed. When
211 * compiling, IN_GUEST indicates that it's for GC. IN_RING0 and
212 * IN_RING3 are also set when applicable, these are accompanied by
213 * IN_GUEST_R0 and IN_GUEST_R3 respecitively.
214 * - Intermediate context - This is a special memory context used within
215 * the world switchers (HC -> RC and back), it features some identity
216 * mapped code pages so we can switch to real mode if necessary.
217 *
[6303]218 */
[12653]219
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