VirtualBox

source: vbox/trunk/include/VBox/cdefs.h@ 24577

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

Main,VMM,VBox/cdefs.h: build fix; added IN_VMM_STATIC.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 11.1 KB
Line 
1/** @file
2 * VirtualBox - Common C and C++ definition.
3 */
4
5/*
6 * Copyright (C) 2006-2007 Sun Microsystems, Inc.
7 *
8 * This file is part of VirtualBox Open Source Edition (OSE), as
9 * available from http://www.virtualbox.org. This file is free software;
10 * you can redistribute it and/or modify it under the terms of the GNU
11 * General Public License (GPL) as published by the Free Software
12 * Foundation, in version 2 as it comes in the "COPYING" file of the
13 * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
14 * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
15 *
16 * The contents of this file may alternatively be used under the terms
17 * of the Common Development and Distribution License Version 1.0
18 * (CDDL) only, as it comes in the "COPYING.CDDL" file of the
19 * VirtualBox OSE distribution, in which case the provisions of the
20 * CDDL are applicable instead of those of the GPL.
21 *
22 * You may elect to license modified versions of this file under the
23 * terms and conditions of either the GPL or the CDDL or both.
24 *
25 * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
26 * Clara, CA 95054 USA or visit http://www.sun.com if you need
27 * additional information or have any questions.
28 */
29
30#ifndef ___VBox_cdefs_h
31#define ___VBox_cdefs_h
32
33#include <iprt/cdefs.h>
34
35
36/** @def VBOX_WITH_STATISTICS
37 * When defined all statistics will be included in the build.
38 * This is enabled by default in all debug builds.
39 */
40#ifndef VBOX_WITH_STATISTICS
41# ifdef DEBUG
42# define VBOX_WITH_STATISTICS
43# endif
44#endif
45
46/** @def VBOX_STRICT
47 * Alias for RT_STRICT.
48 */
49#ifdef RT_STRICT
50# ifndef VBOX_STRICT
51# define VBOX_STRICT
52# endif
53#endif
54
55
56/*
57 * Shut up DOXYGEN warnings and guide it properly thru the code.
58 */
59#ifdef __DOXYGEN__
60#define VBOX_WITH_STATISTICS
61#define VBOX_STRICT
62#define IN_DIS
63#define IN_INTNET_R0
64#define IN_INTNET_R3
65#define IN_REM_R3
66#define IN_SUP_R0
67#define IN_SUP_R3
68#define IN_SUP_GC
69#define IN_USBLIB
70#define IN_VBOXDDU
71#define IN_VMM_RC
72#define IN_VMM_R0
73#define IN_VMM_R3
74/** @todo fixme */
75#endif
76
77
78
79
80/** @def VBOXCALL
81 * The standard calling convention for VBOX interfaces.
82 */
83#define VBOXCALL RTCALL
84
85
86
87/** @def IN_DIS
88 * Used to indicate whether we're inside the same link module as the
89 * disassembler.
90 */
91/** @def DISDECL(type)
92 * Disassembly export or import declaration.
93 * @param type The return type of the function declaration.
94 */
95#if defined(IN_DIS)
96# define DISDECL(type) DECLEXPORT(type) VBOXCALL
97#else
98# define DISDECL(type) DECLIMPORT(type) VBOXCALL
99#endif
100
101
102
103/** @def IN_DBG
104 * Used to indicate whether we're inside the same link module as the debugger
105 * console, gui, and related things (ring-3).
106 */
107/** @def DBGDECL(type)
108 * Debugger module export or import declaration.
109 * Functions declared using this exists only in R3 since the
110 * debugger modules is R3 only.
111 * @param type The return type of the function declaration.
112 */
113#if defined(IN_DBG_R3) || defined(IN_DBG)
114# define DBGDECL(type) DECLEXPORT(type) VBOXCALL
115#else
116# define DBGDECL(type) DECLIMPORT(type) VBOXCALL
117#endif
118
119
120
121/** @def IN_INTNET_R3
122 * Used to indicate whether we're inside the same link module as the Ring 3
123 * Internal Networking Service.
124 */
125/** @def INTNETR3DECL(type)
126 * Internal Networking Service export or import declaration.
127 * @param type The return type of the function declaration.
128 */
129#ifdef IN_INTNET_R3
130# define INTNETR3DECL(type) DECLEXPORT(type) VBOXCALL
131#else
132# define INTNETR3DECL(type) DECLIMPORT(type) VBOXCALL
133#endif
134
135/** @def IN_INTNET_R0
136 * Used to indicate whether we're inside the same link module as the R0
137 * Internal Network Service.
138 */
139/** @def INTNETR0DECL(type)
140 * Internal Networking Service export or import declaration.
141 * @param type The return type of the function declaration.
142 */
143#ifdef IN_INTNET_R0
144# define INTNETR0DECL(type) DECLEXPORT(type) VBOXCALL
145#else
146# define INTNETR0DECL(type) DECLIMPORT(type) VBOXCALL
147#endif
148
149
150
151/** @def IN_REM_R3
152 * Used to indicate whether we're inside the same link module as
153 * the HC Ring-3 Recompiled Execution Manager.
154 */
155/** @def REMR3DECL(type)
156 * Recompiled Execution Manager HC Ring-3 export or import declaration.
157 * @param type The return type of the function declaration.
158 */
159#ifdef IN_REM_R3
160# define REMR3DECL(type) DECLEXPORT(type) VBOXCALL
161#else
162# define REMR3DECL(type) DECLIMPORT(type) VBOXCALL
163#endif
164
165
166
167/** @def IN_SUP_R3
168 * Used to indicate whether we're inside the same link module as the Ring 3 Support Library or not.
169 */
170/** @def SUPR3DECL(type)
171 * Support library export or import declaration.
172 * @param type The return type of the function declaration.
173 */
174#ifdef IN_SUP_R3
175# define SUPR3DECL(type) DECLEXPORT(type) VBOXCALL
176#else
177# define SUPR3DECL(type) DECLIMPORT(type) VBOXCALL
178#endif
179
180/** @def IN_SUP_R0
181 * Used to indicate whether we're inside the same link module as the Ring 0
182 * Support Library or not.
183 */
184/** @def IN_SUP_STATIC
185 * Used to indicate that the Support Library is built or used as a static
186 * library.
187 */
188/** @def SUPR0DECL(type)
189 * Support library export or import declaration.
190 * @param type The return type of the function declaration.
191 */
192#ifdef IN_SUP_R0
193# ifdef IN_SUP_STATIC
194# define SUPR0DECL(type) DECLHIDDEN(type) VBOXCALL
195# else
196# define SUPR0DECL(type) DECLEXPORT(type) VBOXCALL
197# endif
198#else
199# ifdef IN_SUP_STATIC
200# define SUPR0DECL(type) DECLHIDDEN(type) VBOXCALL
201# else
202# define SUPR0DECL(type) DECLIMPORT(type) VBOXCALL
203# endif
204#endif
205
206/** @def IN_SUP_GC
207 * Used to indicate whether we're inside the same link module as the GC Support Library or not.
208 */
209/** @def SUPGCDECL(type)
210 * Support library export or import declaration.
211 * @param type The return type of the function declaration.
212 */
213#ifdef IN_SUP_GC
214# define SUPGCDECL(type) DECLEXPORT(type) VBOXCALL
215#else
216# define SUPGCDECL(type) DECLIMPORT(type) VBOXCALL
217#endif
218
219/** @def IN_SUP_R0
220 * Used to indicate whether we're inside the same link module as the Ring 0 Support Library or not.
221 */
222/** @def SUPR0DECL(type)
223 * Support library export or import declaration.
224 * @param type The return type of the function declaration.
225 */
226#if defined(IN_SUP_R0) || defined(IN_SUP_R3) || defined(IN_SUP_GC)
227# define SUPDECL(type) DECLEXPORT(type) VBOXCALL
228#else
229# define SUPDECL(type) DECLIMPORT(type) VBOXCALL
230#endif
231
232
233
234/** @def IN_USBLIB
235 * Used to indicate whether we're inside the same link module as the USBLib.
236 */
237/** @def USBLIB_DECL
238 * USBLIB export or import declaration.
239 * @param type The return type of the function declaration.
240 */
241#ifdef IN_RING0
242# define USBLIB_DECL(type) type VBOXCALL
243#elif defined(IN_USBLIB)
244# define USBLIB_DECL(type) DECLEXPORT(type) VBOXCALL
245#else
246# define USBLIB_DECL(type) DECLIMPORT(type) VBOXCALL
247#endif
248
249
250
251/** @def IN_VMM_STATIC
252 * Used to indicate that the virtual machine monitor is built or used as a
253 * static library.
254 */
255/** @def IN_VMM_R3
256 * Used to indicate whether we're inside the same link module as the ring 3 part of the
257 * virtual machine monitor or not.
258 */
259/** @def VMMR3DECL
260 * Ring 3 VMM export or import declaration.
261 * @param type The return type of the function declaration.
262 */
263#ifdef IN_VMM_R3
264# ifdef IN_VMM_STATIC
265# define VMMR3DECL(type) DECLHIDDEN(type) VBOXCALL
266# else
267# define VMMR3DECL(type) DECLEXPORT(type) VBOXCALL
268# endif
269#elif defined(IN_RING3)
270# ifdef IN_VMM_STATIC
271# define VMMR3DECL(type) DECLHIDDEN(type) VBOXCALL
272# else
273# define VMMR3DECL(type) DECLIMPORT(type) VBOXCALL
274# endif
275#else
276# define VMMR3DECL(type) DECL_INVALID(type)
277#endif
278
279/** @def IN_VMM_R0
280 * Used to indicate whether we're inside the same link module as the ring 0 part of the
281 * virtual machine monitor or not.
282 */
283/** @def VMMR0DECL
284 * Ring 0 VMM export or import declaration.
285 * @param type The return type of the function declaration.
286 */
287#ifdef IN_VMM_R0
288# define VMMR0DECL(type) DECLEXPORT(type) VBOXCALL
289#elif defined(IN_RING0)
290# define VMMR0DECL(type) DECLIMPORT(type) VBOXCALL
291#else
292# define VMMR0DECL(type) DECL_INVALID(type)
293#endif
294
295/** @def IN_VMM_RC
296 * Used to indicate whether we're inside the same link module as the raw-mode
297 * context part of the virtual machine monitor or not.
298 */
299/** @def VMMRCDECL
300 * Raw-mode context VMM export or import declaration.
301 * @param type The return type of the function declaration.
302 */
303#ifdef IN_VMM_RC
304# define VMMRCDECL(type) DECLEXPORT(type) VBOXCALL
305#elif defined(IN_RC)
306# define VMMRCDECL(type) DECLIMPORT(type) VBOXCALL
307#else
308# define VMMRCDECL(type) DECL_INVALID(type)
309#endif
310
311/** @def VMMRZDECL
312 * Ring-0 and Raw-mode context VMM export or import declaration.
313 * @param type The return type of the function declaration.
314 */
315#if defined(IN_VMM_R0) || defined(IN_VMM_RC)
316# define VMMRZDECL(type) DECLEXPORT(type) VBOXCALL
317#elif defined(IN_RING0) || defined(IN_RZ)
318# define VMMRZDECL(type) DECLIMPORT(type) VBOXCALL
319#else
320# define VMMRZDECL(type) DECL_INVALID(type)
321#endif
322
323/** @def VMMDECL
324 * VMM export or import declaration.
325 * @param type The return type of the function declaration.
326 */
327#ifdef IN_VMM_STATIC
328# define VMMDECL(type) DECLHIDDEN(type) VBOXCALL
329#elif defined(IN_VMM_R3) || defined(IN_VMM_R0) || defined(IN_VMM_RC)
330# define VMMDECL(type) DECLEXPORT(type) VBOXCALL
331#else
332# define VMMDECL(type) DECLIMPORT(type) VBOXCALL
333#endif
334
335/** @def VMM_INT_DECL
336 * VMM internal function.
337 * @param type The return type of the function declaration.
338 */
339#if defined(IN_VMM_R3) || defined(IN_VMM_R0) || defined(IN_VMM_RC)
340# define VMM_INT_DECL(type) DECLHIDDEN(type) VBOXCALL
341#else
342# define VMM_INT_DECL(type) DECL_INVALID(type)
343#endif
344
345/** @def VMMR3_INT_DECL
346 * VMM internal function, ring-3.
347 * @param type The return type of the function declaration.
348 */
349#ifdef IN_VMM_R3
350# define VMMR3_INT_DECL(type) DECLHIDDEN(type) VBOXCALL
351#else
352# define VMMR3_INT_DECL(type) DECL_INVALID(type)
353#endif
354
355/** @def VMMR0_INT_DECL
356 * VMM internal function, ring-0.
357 * @param type The return type of the function declaration.
358 */
359#ifdef IN_VMM_R0
360# define VMMR0_INT_DECL(type) DECLHIDDEN(type) VBOXCALL
361#else
362# define VMMR0_INT_DECL(type) DECL_INVALID(type)
363#endif
364
365/** @def VMMRC_INT_DECL
366 * VMM internal function, raw-mode context.
367 * @param type The return type of the function declaration.
368 */
369#ifdef IN_VMM_RC
370# define VMMRC_INT_DECL(type) DECLHIDDEN(type) VBOXCALL
371#else
372# define VMMRC_INT_DECL(type) DECL_INVALID(type)
373#endif
374
375/** @def VMMRZ_INT_DECL
376 * VMM internal function, ring-0 + raw-mode context.
377 * @param type The return type of the function declaration.
378 */
379#ifdef IN_VMM_RZ
380# define VMMRZ_INT_DECL(type) DECLHIDDEN(type) VBOXCALL
381#else
382# define VMMRZ_INT_DECL(type) DECL_INVALID(type)
383#endif
384
385
386
387/** @def IN_VBOXDDU
388 * Used to indicate whether we're inside the VBoxDDU shared object.
389 */
390/** @def VBOXDDU_DECL(type)
391 * VBoxDDU export or import (ring-3).
392 * @param type The return type of the function declaration.
393 */
394#ifdef IN_VBOXDDU
395# define VBOXDDU_DECL(type) DECLEXPORT(type) VBOXCALL
396#else
397# define VBOXDDU_DECL(type) DECLIMPORT(type) VBOXCALL
398#endif
399
400
401#endif
402
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