VirtualBox

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

Last change on this file since 78203 was 76553, checked in by vboxsync, 5 years ago

scm --update-copyright-year

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 7.3 KB
Line 
1/* $Id: VBox-doc.c 76553 2019-01-01 01:45:53Z vboxsync $ */
2/** @file
3 * VirtualBox Top Level Documentation File.
4 */
5
6/*
7 * Copyright (C) 2006-2019 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
19/** @mainpage VirtualBox
20 *
21 * (add introduction here)
22 *
23 * @section pg_main_comp Components
24 *
25 * - VM / @ref pg_vmm "VMM" / GVM / @ref pg_gvmm "GVMM" - Virtual Machine
26 * Monitor.
27 * - @ref pg_cfgm
28 * - @ref pg_cpum
29 * - @ref pg_csam
30 * - @ref pg_dbgf
31 * - @ref pg_dbgf_addr_space
32 * - @ref pg_dbgf_vmcore
33 * - @ref pg_dbgf_module
34 * - @ref pg_dbgc
35 * - VBoxDbg - Debugger GUI (Qt).
36 * - @ref grp_dis
37 * - @ref pg_em
38 * - @ref pg_gim
39 * - @ref pg_hm
40 * - @ref pg_rem
41 * - @ref pg_vboxrem_amd64
42 * - @ref pg_iem
43 * - @ref pg_gmm
44 * - @ref pg_mm
45 * - @ref pg_pgm
46 * - @ref pg_pgm_phys
47 * - @ref pg_pgm_pool
48 * - @ref pg_selm
49 * - @ref pg_iom
50 * - @ref pg_patm
51 * - @ref pg_pdm
52 * - Devices / USB Devices, Drivers and their public interfaces.
53 * - Async I/O Completion API.
54 * - Async Task API.
55 * - Critical Section API.
56 * - Queue API.
57 * - Thread API.
58 * - @ref pg_pdm_block_cache
59 * - @ref pg_ssm
60 * - @ref pg_stam
61 * - @ref pg_tm
62 * - @ref pg_trpm
63 * - VMM docs:
64 * - @ref pg_vmm_guideline
65 * - @ref pg_raw
66 * - Pluggable Components (via PDM).
67 * - DevPCArch - PC Architecture Device (chipset, legacy ++).
68 * - DevPCBios - Basic Input Output System.
69 * - DevDMAC - DMA Controller.
70 * - DevPIC - Programmable Interrupt Controller.
71 * - DevPIT - Programmable Interval Timer (i8254).
72 * - DevRTC - Real Time Clock.
73 * - DevVGA - Video Graphic Array.
74 * - DevPCI - Peripheral Component Interface (Bus).
75 * - VBoxDev - Special PCI Device which serves as an interface between
76 * the VMM and the guest OS for the additions.
77 * - Networking:
78 * - DevPCNet - AMD PCNet Device Emulation.
79 * - DevE1000 - Intel E1000 Device Emulation.
80 * - DevEEPROM - Intel E1000 EPROM Device Emulation.
81 * - SrvINetNetR0 - Internal Networking Ring-0 Service.
82 * - DevINIP - IP Stack Service for the internal networking.
83 * - DrvIntNet - Internal Networking Driver.
84 * - DrvNetSniffer - Wireshark Compatible Sniffer Driver (pass thru).
85 * - DrvNAT - Network Address Translation Driver.
86 * - DrvTAP - Host Interface Networking Driver.
87 * - Storage:
88 * - DevATA - ATA ((E)IDE) Device Emulation.
89 * - @ref pg_dev_ahci
90 * - DevFDC - Floppy Controller Device Emulation.
91 * - DrvBlock - Intermediate block driver.
92 * - DrvHostBase - Common code for the host drivers.
93 * - DrvHostDVD - Host DVD drive driver.
94 * - DrvHostFloppy - Host floppy drive driver.
95 * - DrvHostRawDisk - Host raw disk drive driver.
96 * - DrvMediaISO - ISO media driver.
97 * - DrvRawImage - Raw image driver (floppy images etc).
98 * - DrvVD - Intermediate Virtual Drive (Media) driver.
99 * - DrvVDI - VirtualBox Drive Image Container Driver.
100 * - DrvVmdk - VMDK Drive Image Container Driver.
101 * - USB:
102 * - @ref pg_dev_ohci
103 * - @ref pg_dev_ehci
104 * - @ref pg_dev_vusb
105 * - @ref pg_dev_vusb_old
106 * - Host Drivers.
107 * - SUPDRV - The Support driver (aka VBoxDrv).
108 * - @ref pg_sup
109 * - @ref pg_netflt
110 * - @ref pg_netadp
111 * - VBoxUSB - The USB support driver.
112 * - @ref pg_netflt
113 * - @ref pg_rawpci
114 * - Host Services.
115 * - @ref pg_hostclip Shared Clipboard.
116 * - Shared Folders.
117 * - Shared OpenGL. See PDF. (TODO: translate PDF to doxygen)
118 * - @ref pg_opengl_cocoa
119 * - @ref pg_svc_guest_properties
120 * - @ref pg_svc_guest_control
121 * - Guest Additions.
122 * - VBoxGuest.
123 * - @ref pg_guest_lib
124 * - @ref pg_vgsvc
125 * - @ref pg_vgsvc_timesync
126 * - @ref pg_vgsvc_vminfo
127 * - @ref pg_vgsvc_vmstats
128 * - @ref pg_vgsvc_gstctrl
129 * - @ref pg_vgsvc_pagesharing
130 * - @ref pg_vgsvc_memballoon
131 * - @ref pg_vgsvc_cpuhotplug
132 * - @ref pg_vgsvc_automount
133 * - @ref pg_vgsvc_clipboard
134 * - VBoxControl.
135 * - VBoxVideo.
136 * - crOpenGL.
137 * - VBoxClient / VBoxTray.
138 * - pam.
139 * - ...
140 * - Network Services:
141 * - @ref pg_net_dhcp
142 * - NAT
143 * - @ref pg_main
144 * - @ref pg_main_events
145 * - @ref pg_vrdb_usb
146 * - Frontends:
147 * - VirtualBox - The default Qt-based GUI.
148 * - VBoxHeadless - The headless frontend.
149 * - VBoxManage - The CLI.
150 * - VBoxShell - An interactive shell written in python.
151 * - VBoxSDL - A very simple GUI.
152 * - VBoxBFE - A bare metal edition which does not use COM/XPCOM (barely
153 * maintained atm).
154 * - IPRT - Runtime Library for hiding host OS differences.
155 * - Validation Kit:
156 * - @ref pg_validationkit_guideline
157 * - @ref pg_bs3kit
158 * - @ref pg_vbox_guideline
159 *
160 * @todo Make links to the components.
161 *
162 *
163 *
164 * @section Execution Contexts
165 *
166 * VirtualBox defines a number of different execution context, this can be
167 * confusing at first. So, to start with take a look at this diagram:
168 *
169 * @image html VMMContexts.png
170 *
171 * Context definitions:
172 * - Host context (HC) - This is the context where the host OS runs and
173 * runs VirtualBox within it. The absense of IN_RC and IN_GUEST
174 * indicates that we're in HC. IN_RING0 indicates ring-0 (kernel) and
175 * IN_RING3 indicates ring-3.
176 * - Raw-mode Context (RC) - This is the special VMM context where we
177 * execute the guest code directly on the CPU. Kernel code is patched
178 * and execute in ring-1 instead of ring-0 (ring compression). Ring-3
179 * code execute unmodified. Only VMMs use ring-1, so we don't need to
180 * worry about that (it's guarded against in the scheduler (EM)). We can
181 * in theory run ring-2 there, but since practially only only OS/2 uses
182 * ring-2, it is of little importance. The macro IN_RC indicates that
183 * we're compiling something for RC.
184 * Note! This used to be called GC (see below) earlier, so a bunch of RC
185 * things are using GC markers.
186 * - Guest Context (GC) - This is where the guest code is executed. When
187 * compiling, IN_GUEST indicates that it's for GC. IN_RING0 and
188 * IN_RING3 are also set when applicable, these are accompanied by
189 * IN_GUEST_R0 and IN_GUEST_R3 respecitively.
190 * - Intermediate context - This is a special memory context used within
191 * the world switchers (HC -> RC and back), it features some identity
192 * mapped code pages so we can switch to real mode if necessary.
193 *
194 */
195
Note: See TracBrowser for help on using the repository browser.

© 2023 Oracle
ContactPrivacy policyTerms of Use