VirtualBox

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

Last change on this file since 7581 was 6489, checked in by vboxsync, 17 years ago

r=bird: Fixed CFGM regression (dmik only). Added a todo for dmik.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 39.4 KB
Line 
1/** @file
2 * VirtualBox - Common C and C++ definition.
3 */
4
5/*
6 * Copyright (C) 2006-2007 innotek GmbH
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
26#ifndef ___VBox_cdefs_h
27#define ___VBox_cdefs_h
28
29#include <iprt/cdefs.h>
30
31
32/** @def VBOX_WITH_STATISTICS
33 * When defined all statistics will be included in the build.
34 * This is enabled by default in all debug builds.
35 */
36#ifndef VBOX_WITH_STATISTICS
37# ifdef DEBUG
38# define VBOX_WITH_STATISTICS
39# endif
40#endif
41
42/** @def VBOX_STRICT
43 * Alias for RT_STRICT.
44 */
45#ifdef RT_STRICT
46# ifndef VBOX_STRICT
47# define VBOX_STRICT
48# endif
49#endif
50
51
52/*
53 * Shut up DOXYGEN warnings and guide it properly thru the code.
54 */
55#ifdef __DOXYGEN__
56#define VBOX_WITH_STATISTICS
57#ifndef VBOX_STRICT
58# define VBOX_STRICT
59#endif
60#define IN_CFGM_GC
61#define IN_CFGM_R3
62#define IN_CPUM_GC
63#define IN_CPUM_R0
64#define IN_CPUM_R3
65#define IN_CSAM_R0
66#define IN_CSAM_R3
67#define IN_CSAM_GC
68#define IN_DBGF_R0
69#define IN_DBGF_R3
70#define IN_DBGF_GC
71#define IN_DIS_GC
72#define IN_DIS_R0
73#define IN_DIS_R3
74#define IN_EM_GC
75#define IN_EM_R3
76#define IN_EM_R0
77#define IN_HWACCM_R0
78#define IN_HWACCM_R3
79#define IN_HWACCM_GC
80#define IN_IDE_R3
81#define IN_INTNET_R0
82#define IN_INTNET_R3
83#define IN_IOM_GC
84#define IN_IOM_R3
85#define IN_IOM_R0
86#define IN_MM_GC
87#define IN_MM_R0
88#define IN_MM_R3
89#define IN_PATM_R0
90#define IN_PATM_R3
91#define IN_PATM_GC
92#define IN_PDM_GC
93#define IN_PDM_R3
94#define IN_PGM_GC
95#define IN_PGM_R0
96#define IN_PGM_R3
97#define IN_REM_GC
98#define IN_REM_R0
99#define IN_REM_R3
100#define IN_SELM_GC
101#define IN_SELM_R0
102#define IN_SELM_R3
103#define IN_SSM_R3
104#define IN_STAM_GC
105#define IN_STAM_R0
106#define IN_STAM_R3
107#define IN_SUP_R0
108#define IN_SUP_R3
109#define IN_SUP_GC
110#define IN_TM_GC
111#define IN_TM_R0
112#define IN_TM_R3
113#define IN_TRPM_GC
114#define IN_TRPM_R0
115#define IN_TRPM_R3
116#define IN_USB_GC
117#define IN_USB_R0
118#define IN_USB_R3
119#define IN_USBLIB
120#define IN_VGADEVICE_GC
121#define IN_VGADEVICE_R3
122#define IN_VHHD_R3
123#define IN_VM_GC
124#define IN_VM_R0
125#define IN_VM_R3
126#define IN_VMM_GC
127#define IN_VMM_R0
128#define IN_VMM_R3
129/** @todo fixme */
130#endif
131
132
133
134
135/** @def VBOXCALL
136 * The standard calling convention for VBOX interfaces.
137 */
138#define VBOXCALL RTCALL
139
140
141
142/** @def IN_VM_R3
143 * Used to indicate whether we're inside the same link module as the ring 3 part of the
144 * virtual machine (the module) or not.
145 */
146/** @def VMR3DECL
147 * Ring 3 VM export or import declaration.
148 * @param type The return type of the function declaration.
149 */
150#ifdef IN_VM_R3
151# define VMR3DECL(type) DECLEXPORT(type) VBOXCALL
152#else
153# define VMR3DECL(type) DECLIMPORT(type) VBOXCALL
154#endif
155
156/** @def IN_VM_R0
157 * Used to indicate whether we're inside the same link module as the ring 0
158 * part of the virtual machine (the module) or not.
159 */
160/** @def VMR0DECL
161 * Ring 0 VM export or import declaration.
162 * @param type The return type of the function declaration.
163 */
164#ifdef IN_VM_R0
165# define VMR0DECL(type) DECLEXPORT(type) VBOXCALL
166#else
167# define VMR0DECL(type) DECLIMPORT(type) VBOXCALL
168#endif
169
170/** @def IN_VM_GC
171 * Used to indicate whether we're inside the same link module as the guest context
172 * part of the virtual machine (the module) or not.
173 */
174/** @def VMGCDECL
175 * Guest context VM export or import declaration.
176 * @param type The return type of the function declaration.
177 */
178#ifdef IN_VM_GC
179# define VMGCDECL(type) DECLEXPORT(type) VBOXCALL
180#else
181# define VMGCDECL(type) DECLIMPORT(type) VBOXCALL
182#endif
183
184/** @def VMDECL
185 * VM export or import declaration.
186 * @param type The return type of the function declaration.
187 */
188#if defined(IN_VM_R3) || defined(IN_VM_R0) || defined(IN_VM_GC)
189# define VMDECL(type) DECLEXPORT(type) VBOXCALL
190#else
191# define VMDECL(type) DECLIMPORT(type) VBOXCALL
192#endif
193
194
195/** @def IN_VMM_R3
196 * Used to indicate whether we're inside the same link module as the ring 3 part of the
197 * virtual machine monitor or not.
198 */
199/** @def VMMR3DECL
200 * Ring 3 VMM export or import declaration.
201 * @param type The return type of the function declaration.
202 */
203#ifdef IN_VMM_R3
204# define VMMR3DECL(type) DECLEXPORT(type) VBOXCALL
205#else
206# define VMMR3DECL(type) DECLIMPORT(type) VBOXCALL
207#endif
208
209/** @def IN_VMM_R0
210 * Used to indicate whether we're inside the same link module as the ring 0 part of the
211 * virtual machine monitor or not.
212 */
213/** @def VMMR0DECL
214 * Ring 0 VMM export or import declaration.
215 * @param type The return type of the function declaration.
216 */
217#ifdef IN_VMM_R0
218# define VMMR0DECL(type) DECLEXPORT(type) VBOXCALL
219#else
220# define VMMR0DECL(type) DECLIMPORT(type) VBOXCALL
221#endif
222
223/** @def IN_VMM_GC
224 * Used to indicate whether we're inside the same link module as the guest context
225 * part of the virtual machine monitor or not.
226 */
227/** @def VMMGCDECL
228 * Guest context VMM export or import declaration.
229 * @param type The return type of the function declaration.
230 */
231#ifdef IN_VMM_GC
232# define VMMGCDECL(type) DECLEXPORT(type) VBOXCALL
233#else
234# define VMMGCDECL(type) DECLIMPORT(type) VBOXCALL
235#endif
236
237/** @def VMMDECL
238 * VMM export or import declaration.
239 * @param type The return type of the function declaration.
240 */
241#if defined(IN_VMM_R3) || defined(IN_VMM_R0) || defined(IN_VMM_GC)
242# define VMMDECL(type) DECLEXPORT(type) VBOXCALL
243#else
244# define VMMDECL(type) DECLIMPORT(type) VBOXCALL
245#endif
246
247
248/** @def IN_DIS_R3
249 * Used to indicate whether we're inside the same link module as the
250 * Ring-3 disassembler or not.
251 */
252/** @def DISR3DECL(type)
253 * Disassembly export or import declaration.
254 * @param type The return type of the function declaration.
255 */
256#ifdef IN_DIS_R3
257# define DISR3DECL(type) DECLEXPORT(type) VBOXCALL
258#else
259# define DISR3DECL(type) DECLIMPORT(type) VBOXCALL
260#endif
261
262/** @def IN_DIS_R0
263 * Used to indicate whether we're inside the same link module as the
264 * Ring-0 disassembler or not.
265 */
266/** @def DISR0DECL(type)
267 * Disassembly export or import declaration.
268 * @param type The return type of the function declaration.
269 */
270#ifdef IN_DIS_R0
271# define DISR0DECL(type) DECLEXPORT(type) VBOXCALL
272#else
273# define DISR0DECL(type) DECLIMPORT(type) VBOXCALL
274#endif
275
276/** @def IN_DIS_GC
277 * Used to indicate whether we're inside the same link module as the
278 * GC disassembler or not.
279 */
280/** @def DISGCDECL(type)
281 * Disassembly export or import declaration.
282 * @param type The return type of the function declaration.
283 */
284#ifdef IN_DIS_GC
285# define DISGCDECL(type) DECLEXPORT(type) VBOXCALL
286#else
287# define DISGCDECL(type) DECLIMPORT(type) VBOXCALL
288#endif
289
290/** @def DISDECL(type)
291 * Disassembly export or import declaration.
292 * @param type The return type of the function declaration.
293 */
294#if defined(IN_DIS_R3) ||defined(IN_DIS_R0) || defined(IN_DIS_GC)
295# define DISDECL(type) DECLEXPORT(type) VBOXCALL
296#else
297# define DISDECL(type) DECLIMPORT(type) VBOXCALL
298#endif
299
300
301/** @def IN_SUP_R3
302 * Used to indicate whether we're inside the same link module as the Ring 3 Support Library or not.
303 */
304/** @def SUPR3DECL(type)
305 * Support library export or import declaration.
306 * @param type The return type of the function declaration.
307 */
308#ifdef IN_SUP_R3
309# define SUPR3DECL(type) DECLEXPORT(type) VBOXCALL
310#else
311# define SUPR3DECL(type) DECLIMPORT(type) VBOXCALL
312#endif
313
314/** @def IN_SUP_R0
315 * Used to indicate whether we're inside the same link module as the Ring 0 Support Library or not.
316 */
317/** @def SUPR0DECL(type)
318 * Support library export or import declaration.
319 * @param type The return type of the function declaration.
320 */
321#ifdef IN_SUP_R0
322# define SUPR0DECL(type) DECLEXPORT(type) VBOXCALL
323#else
324# define SUPR0DECL(type) DECLIMPORT(type) VBOXCALL
325#endif
326
327/** @def IN_SUP_GC
328 * Used to indicate whether we're inside the same link module as the GC Support Library or not.
329 */
330/** @def SUPGCDECL(type)
331 * Support library export or import declaration.
332 * @param type The return type of the function declaration.
333 */
334#ifdef IN_SUP_GC
335# define SUPGCDECL(type) DECLEXPORT(type) VBOXCALL
336#else
337# define SUPGCDECL(type) DECLIMPORT(type) VBOXCALL
338#endif
339
340/** @def IN_SUP_R0
341 * Used to indicate whether we're inside the same link module as the Ring 0 Support Library or not.
342 */
343/** @def SUPR0DECL(type)
344 * Support library export or import declaration.
345 * @param type The return type of the function declaration.
346 */
347#if defined(IN_SUP_R0) || defined(IN_SUP_R3) || defined(IN_SUP_GC)
348# define SUPDECL(type) DECLEXPORT(type) VBOXCALL
349#else
350# define SUPDECL(type) DECLIMPORT(type) VBOXCALL
351#endif
352
353
354
355
356/** @def IN_PDM_R3
357 * Used to indicate whether we're inside the same link module as the Ring 3
358 * Pluggable Device Manager.
359 */
360/** @def PDMR3DECL(type)
361 * Pluggable Device Manager export or import declaration.
362 * @param type The return type of the function declaration.
363 */
364#ifdef IN_PDM_R3
365# define PDMR3DECL(type) DECLEXPORT(type) VBOXCALL
366#else
367# define PDMR3DECL(type) DECLIMPORT(type) VBOXCALL
368#endif
369
370/** @def IN_PDM_GC
371 * Used to indicate whether we're inside the same link module as the GC
372 * Pluggable Device Manager.
373 */
374/** @def PDMGCDECL(type)
375 * Pluggable Device Manager export or import declaration.
376 * @param type The return type of the function declaration.
377 */
378#ifdef IN_PDM_GC
379# define PDMGCDECL(type) DECLEXPORT(type) VBOXCALL
380#else
381# define PDMGCDECL(type) DECLIMPORT(type) VBOXCALL
382#endif
383
384/** @def PDMDECL(type)
385 * Pluggable Device Manager export or import declaration.
386 * Functions declared using this macro exists in all contexts.
387 * @param type The return type of the function declaration.
388 */
389#if defined(IN_PDM_R3) || defined(IN_PDM_GC) || defined(IN_PDM_R0)
390# define PDMDECL(type) DECLEXPORT(type) VBOXCALL
391#else
392# define PDMDECL(type) DECLIMPORT(type) VBOXCALL
393#endif
394
395
396
397
398/** @def IN_CFGM_R3
399 * Used to indicate whether we're inside the same link module as the Ring 3
400 * Configuration Manager.
401 */
402/** @def CFGMR3DECL(type)
403 * Configuration Manager export or import declaration.
404 * @param type The return type of the function declaration.
405 */
406#ifdef IN_CFGM_R3
407# define CFGMR3DECL(type) DECLEXPORT(type) VBOXCALL
408#else
409# define CFGMR3DECL(type) DECLIMPORT(type) VBOXCALL
410#endif
411
412/** @def IN_CFGM_GC
413 * Used to indicate whether we're inside the same link module as the GC
414 * Configuration Manager.
415 */
416/** @def CFGMGCDECL(type)
417 * Configuration Manager export or import declaration.
418 * @param type The return type of the function declaration.
419 */
420#ifdef IN_CFGM_GC
421# define CFGMGCDECL(type) DECLEXPORT(type) VBOXCALL
422#else
423# define CFGMGCDECL(type) DECLIMPORT(type) VBOXCALL
424#endif
425
426
427/** @def IN_CPUM_R0
428 * Used to indicate whether we're inside the same link module as
429 * the HC Ring-0 CPU Monitor(/Manager).
430 */
431/** @def CPUMR0DECL(type)
432 * CPU Monitor(/Manager) HC Ring-0 export or import declaration.
433 * @param type The return type of the function declaration.
434 */
435#ifdef IN_CPUM_R0
436# define CPUMR0DECL(type) DECLEXPORT(type) VBOXCALL
437#else
438# define CPUMR0DECL(type) DECLIMPORT(type) VBOXCALL
439#endif
440
441/** @def IN_CPUM_R3
442 * Used to indicate whether we're inside the same link module as
443 * the HC Ring-3 CPU Monitor(/Manager).
444 */
445/** @def CPUMR3DECL(type)
446 * CPU Monitor(/Manager) HC Ring-3 export or import declaration.
447 * @param type The return type of the function declaration.
448 */
449#ifdef IN_CPUM_R3
450# define CPUMR3DECL(type) DECLEXPORT(type) VBOXCALL
451#else
452# define CPUMR3DECL(type) DECLIMPORT(type) VBOXCALL
453#endif
454
455/** @def IN_CPUM_GC
456 * Used to indicate whether we're inside the same link module as
457 * the GC CPU Monitor(/Manager).
458 */
459/** @def CPUMGCDECL(type)
460 * CPU Monitor(/Manager) HC Ring-3 export or import declaration.
461 * @param type The return type of the function declaration.
462 */
463#ifdef IN_CPUM_GC
464# define CPUMGCDECL(type) DECLEXPORT(type) VBOXCALL
465#else
466# define CPUMGCDECL(type) DECLIMPORT(type) VBOXCALL
467#endif
468
469/** @def CPUMDECL(type)
470 * CPU Monitor(/Manager) export or import declaration.
471 * Functions declared using this macro exists in all contexts.
472 * @param type The return type of the function declaration.
473 */
474#if defined(IN_CPUM_R3) || defined(IN_CPUM_GC) || defined(IN_CPUM_R0)
475# define CPUMDECL(type) DECLEXPORT(type) VBOXCALL
476#else
477# define CPUMDECL(type) DECLIMPORT(type) VBOXCALL
478#endif
479
480
481
482/** @def IN_PATM_R0
483 * Used to indicate whether we're inside the same link module as
484 * the HC Ring-0 CPU Monitor(/Manager).
485 */
486/** @def PATMR0DECL(type)
487 * Patch Manager HC Ring-0 export or import declaration.
488 * @param type The return type of the function declaration.
489 */
490#ifdef IN_PATM_R0
491# define PATMR0DECL(type) DECLEXPORT(type) VBOXCALL
492#else
493# define PATMR0DECL(type) DECLIMPORT(type) VBOXCALL
494#endif
495
496/** @def IN_PATM_R3
497 * Used to indicate whether we're inside the same link module as
498 * the HC Ring-3 CPU Monitor(/Manager).
499 */
500/** @def PATMR3DECL(type)
501 * Patch Manager HC Ring-3 export or import declaration.
502 * @param type The return type of the function declaration.
503 */
504#ifdef IN_PATM_R3
505# define PATMR3DECL(type) DECLEXPORT(type) VBOXCALL
506#else
507# define PATMR3DECL(type) DECLIMPORT(type) VBOXCALL
508#endif
509
510/** @def IN_PATM_GC
511 * Used to indicate whether we're inside the same link module as
512 * the GC Patch Manager.
513 */
514/** @def PATMGCDECL(type)
515 * Patch Manager HC Ring-3 export or import declaration.
516 * @param type The return type of the function declaration.
517 */
518#ifdef IN_PATM_GC
519# define PATMGCDECL(type) DECLEXPORT(type) VBOXCALL
520#else
521# define PATMGCDECL(type) DECLIMPORT(type) VBOXCALL
522#endif
523
524/** @def PATMDECL(type)
525 * Patch Manager all contexts export or import declaration.
526 * @param type The return type of the function declaration.
527 */
528#if defined(IN_PATM_R3) || defined(IN_PATM_R0) || defined(IN_PATM_GC)
529# define PATMDECL(type) DECLEXPORT(type) VBOXCALL
530#else
531# define PATMDECL(type) DECLIMPORT(type) VBOXCALL
532#endif
533
534
535
536/** @def IN_CSAM_R0
537 * Used to indicate whether we're inside the same link module as
538 * the HC Ring-0 CPU Monitor(/Manager).
539 */
540/** @def CSAMR0DECL(type)
541 * Code Scanning and Analysis Manager HC Ring-0 export or import declaration.
542 * @param type The return type of the function declaration.
543 */
544#ifdef IN_CSAM_R0
545# define CSAMR0DECL(type) DECLEXPORT(type) VBOXCALL
546#else
547# define CSAMR0DECL(type) DECLIMPORT(type) VBOXCALL
548#endif
549
550/** @def IN_CSAM_R3
551 * Used to indicate whether we're inside the same link module as
552 * the HC Ring-3 CPU Monitor(/Manager).
553 */
554/** @def CSAMR3DECL(type)
555 * Code Scanning and Analysis Manager HC Ring-3 export or import declaration.
556 * @param type The return type of the function declaration.
557 */
558#ifdef IN_CSAM_R3
559# define CSAMR3DECL(type) DECLEXPORT(type) VBOXCALL
560#else
561# define CSAMR3DECL(type) DECLIMPORT(type) VBOXCALL
562#endif
563
564/** @def IN_CSAM_GC
565 * Used to indicate whether we're inside the same link module as
566 * the GC Code Scanning and Analysis Manager.
567 */
568/** @def CSAMGCDECL(type)
569 * Code Scanning and Analysis Manager HC Ring-3 export or import declaration.
570 * @param type The return type of the function declaration.
571 */
572#ifdef IN_CSAM_GC
573# define CSAMGCDECL(type) DECLEXPORT(type) VBOXCALL
574#else
575# define CSAMGCDECL(type) DECLIMPORT(type) VBOXCALL
576#endif
577
578/** @def CSAMDECL(type)
579 * Code Scanning and Analysis Manager export or import declaration.
580 * Functions declared using this macro exists in all contexts.
581 * @param type The return type of the function declaration.
582 */
583#if defined(IN_CSAM_R3) || defined(IN_CSAM_GC) || defined(IN_CSAM_R0)
584# define CSAMDECL(type) DECLEXPORT(type) VBOXCALL
585#else
586# define CSAMDECL(type) DECLIMPORT(type) VBOXCALL
587#endif
588
589
590
591/** @def IN_MM_R0
592 * Used to indicate whether we're inside the same link module as
593 * the HC Ring-0 Memory Monitor(/Manager).
594 */
595/** @def MMR0DECL(type)
596 * Memory Monitor(/Manager) HC Ring-0 export or import declaration.
597 * @param type The return type of the function declaration.
598 */
599#ifdef IN_MM_R0
600# define MMR0DECL(type) DECLEXPORT(type) VBOXCALL
601#else
602# define MMR0DECL(type) DECLIMPORT(type) VBOXCALL
603#endif
604
605/** @def IN_MM_R3
606 * Used to indicate whether we're inside the same link module as
607 * the HC Ring-3 Memory Monitor(/Manager).
608 */
609/** @def MMR3DECL(type)
610 * Memory Monitor(/Manager) HC Ring-3 export or import declaration.
611 * @param type The return type of the function declaration.
612 */
613#ifdef IN_MM_R3
614# define MMR3DECL(type) DECLEXPORT(type) VBOXCALL
615#else
616# define MMR3DECL(type) DECLIMPORT(type) VBOXCALL
617#endif
618
619/** @def IN_MM_GC
620 * Used to indicate whether we're inside the same link module as
621 * the GC Memory Monitor(/Manager).
622 */
623/** @def MMGCDECL(type)
624 * Memory Monitor(/Manager) HC Ring-3 export or import declaration.
625 * @param type The return type of the function declaration.
626 */
627#ifdef IN_MM_GC
628# define MMGCDECL(type) DECLEXPORT(type) VBOXCALL
629#else
630# define MMGCDECL(type) DECLIMPORT(type) VBOXCALL
631#endif
632
633/** @def MMDECL(type)
634 * Memory Monitor(/Manager) export or import declaration.
635 * Functions declared using this macro exists in all contexts.
636 * @param type The return type of the function declaration.
637 */
638#if defined(IN_MM_R3) || defined(IN_MM_GC) || defined(IN_MM_R0)
639# define MMDECL(type) DECLEXPORT(type) VBOXCALL
640#else
641# define MMDECL(type) DECLIMPORT(type) VBOXCALL
642#endif
643
644
645
646
647/** @def IN_SELM_R0
648 * Used to indicate whether we're inside the same link module as
649 * the HC Ring-0 Selector Monitor(/Manager).
650 */
651/** @def SELMR0DECL(type)
652 * Selector Monitor(/Manager) HC Ring-0 export or import declaration.
653 * @param type The return type of the function declaration.
654 */
655#ifdef IN_SELM_R0
656# define SELMR0DECL(type) DECLEXPORT(type) VBOXCALL
657#else
658# define SELMR0DECL(type) DECLIMPORT(type) VBOXCALL
659#endif
660
661/** @def IN_SELM_R3
662 * Used to indicate whether we're inside the same link module as
663 * the HC Ring-3 Selector Monitor(/Manager).
664 */
665/** @def SELMR3DECL(type)
666 * Selector Monitor(/Manager) HC Ring-3 export or import declaration.
667 * @param type The return type of the function declaration.
668 */
669#ifdef IN_SELM_R3
670# define SELMR3DECL(type) DECLEXPORT(type) VBOXCALL
671#else
672# define SELMR3DECL(type) DECLIMPORT(type) VBOXCALL
673#endif
674
675/** @def IN_SELM_GC
676 * Used to indicate whether we're inside the same link module as
677 * the GC Selector Monitor(/Manager).
678 */
679/** @def SELMGCDECL(type)
680 * Selector Monitor(/Manager) HC Ring-3 export or import declaration.
681 * @param type The return type of the function declaration.
682 */
683#ifdef IN_SELM_GC
684# define SELMGCDECL(type) DECLEXPORT(type) VBOXCALL
685#else
686# define SELMGCDECL(type) DECLIMPORT(type) VBOXCALL
687#endif
688
689/** @def SELMDECL(type)
690 * Selector Monitor(/Manager) export or import declaration.
691 * Functions declared using this macro exists in all contexts.
692 * @param type The return type of the function declaration.
693 */
694#if defined(IN_SELM_R3) || defined(IN_SELM_GC) || defined(IN_SELM_R0)
695# define SELMDECL(type) DECLEXPORT(type) VBOXCALL
696#else
697# define SELMDECL(type) DECLIMPORT(type) VBOXCALL
698#endif
699
700
701
702/** @def IN_HWACCM_R0
703 * Used to indicate whether we're inside the same link module as
704 * the HC Ring-0 VMX Monitor(/Manager).
705 */
706/** @def HWACCMR0DECL(type)
707 * Selector Monitor(/Manager) HC Ring-0 export or import declaration.
708 * @param type The return type of the function declaration.
709 */
710#ifdef IN_HWACCM_R0
711# define HWACCMR0DECL(type) DECLEXPORT(type) VBOXCALL
712#else
713# define HWACCMR0DECL(type) DECLIMPORT(type) VBOXCALL
714#endif
715
716/** @def IN_HWACCM_R3
717 * Used to indicate whether we're inside the same link module as
718 * the HC Ring-3 VMX Monitor(/Manager).
719 */
720/** @def HWACCMR3DECL(type)
721 * Selector Monitor(/Manager) HC Ring-3 export or import declaration.
722 * @param type The return type of the function declaration.
723 */
724#ifdef IN_HWACCM_R3
725# define HWACCMR3DECL(type) DECLEXPORT(type) VBOXCALL
726#else
727# define HWACCMR3DECL(type) DECLIMPORT(type) VBOXCALL
728#endif
729
730/** @def IN_HWACCM_GC
731 * Used to indicate whether we're inside the same link module as
732 * the GC VMX Monitor(/Manager).
733 */
734/** @def HWACCMGCDECL(type)
735 * Selector Monitor(/Manager) HC Ring-3 export or import declaration.
736 * @param type The return type of the function declaration.
737 */
738#ifdef IN_HWACCM_GC
739# define HWACCMGCDECL(type) DECLEXPORT(type) VBOXCALL
740#else
741# define HWACCMGCDECL(type) DECLIMPORT(type) VBOXCALL
742#endif
743
744/** @def HWACCMDECL(type)
745 * VMX Monitor(/Manager) export or import declaration.
746 * Functions declared using this macro exists in all contexts.
747 * @param type The return type of the function declaration.
748 */
749#if defined(IN_HWACCM_R3) || defined(IN_HWACCM_GC) || defined(IN_HWACCM_R0)
750# define HWACCMDECL(type) DECLEXPORT(type) VBOXCALL
751#else
752# define HWACCMDECL(type) DECLIMPORT(type) VBOXCALL
753#endif
754
755
756
757/** @def IN_TM_R0
758 * Used to indicate whether we're inside the same link module as
759 * the HC Ring-0 Time Manager.
760 */
761/** @def TMR0DECL(type)
762 * Time Manager HC Ring-0 export or import declaration.
763 * @param type The return type of the function declaration.
764 */
765#ifdef IN_TM_R0
766# define TMR0DECL(type) DECLEXPORT(type) VBOXCALL
767#else
768# define TMR0DECL(type) DECLIMPORT(type) VBOXCALL
769#endif
770
771/** @def IN_TM_R3
772 * Used to indicate whether we're inside the same link module as
773 * the HC Ring-3 Time Manager.
774 */
775/** @def TMR3DECL(type)
776 * Time Manager HC Ring-3 export or import declaration.
777 * @param type The return type of the function declaration.
778 */
779#ifdef IN_TM_R3
780# define TMR3DECL(type) DECLEXPORT(type) VBOXCALL
781#else
782# define TMR3DECL(type) DECLIMPORT(type) VBOXCALL
783#endif
784
785/** @def IN_TM_GC
786 * Used to indicate whether we're inside the same link module as
787 * the GC Time Manager.
788 */
789/** @def TMGCDECL(type)
790 * Time Manager HC Ring-3 export or import declaration.
791 * @param type The return type of the function declaration.
792 */
793#ifdef IN_TM_GC
794# define TMGCDECL(type) DECLEXPORT(type) VBOXCALL
795#else
796# define TMGCDECL(type) DECLIMPORT(type) VBOXCALL
797#endif
798
799/** @def TMDECL(type)
800 * Time Manager export or import declaration.
801 * Functions declared using this macro exists in all contexts.
802 * @param type The return type of the function declaration.
803 */
804#if defined(IN_TM_R3) || defined(IN_TM_GC) || defined(IN_TM_R0)
805# define TMDECL(type) DECLEXPORT(type) VBOXCALL
806#else
807# define TMDECL(type) DECLIMPORT(type) VBOXCALL
808#endif
809
810
811
812
813/** @def IN_TRPM_R0
814 * Used to indicate whether we're inside the same link module as
815 * the HC Ring-0 Trap Monitor.
816 */
817/** @def TRPMR0DECL(type)
818 * Trap Monitor HC Ring-0 export or import declaration.
819 * @param type The return type of the function declaration.
820 */
821#ifdef IN_TRPM_R0
822# define TRPMR0DECL(type) DECLEXPORT(type) VBOXCALL
823#else
824# define TRPMR0DECL(type) DECLIMPORT(type) VBOXCALL
825#endif
826
827/** @def IN_TRPM_R3
828 * Used to indicate whether we're inside the same link module as
829 * the HC Ring-3 Trap Monitor.
830 */
831/** @def TRPMR3DECL(type)
832 * Trap Monitor HC Ring-3 export or import declaration.
833 * @param type The return type of the function declaration.
834 */
835#ifdef IN_TRPM_R3
836# define TRPMR3DECL(type) DECLEXPORT(type) VBOXCALL
837#else
838# define TRPMR3DECL(type) DECLIMPORT(type) VBOXCALL
839#endif
840
841/** @def IN_TRPM_GC
842 * Used to indicate whether we're inside the same link module as
843 * the GC Trap Monitor.
844 */
845/** @def TRPMGCDECL(type)
846 * Trap Monitor GC export or import declaration.
847 * @param type The return type of the function declaration.
848 */
849#ifdef IN_TRPM_GC
850# define TRPMGCDECL(type) DECLEXPORT(type) VBOXCALL
851#else
852# define TRPMGCDECL(type) DECLIMPORT(type) VBOXCALL
853#endif
854
855/** @def TRPMDECL(type)
856 * Trap Monitor export or import declaration.
857 * Functions declared using this macro exists in all contexts.
858 * @param type The return type of the function declaration.
859 */
860#if defined(IN_TRPM_R3) || defined(IN_TRPM_GC) || defined(IN_TRPM_R0)
861# define TRPMDECL(type) DECLEXPORT(type) VBOXCALL
862#else
863# define TRPMDECL(type) DECLIMPORT(type) VBOXCALL
864#endif
865
866
867
868
869/** @def IN_USB_R0
870 * Used to indicate whether we're inside the same link module as
871 * the HC Ring-0 USB device / service.
872 */
873/** @def USBR0DECL(type)
874 * USB device / service HC Ring-0 export or import declaration.
875 * @param type The return type of the function declaration.
876 */
877#ifdef IN_USB_R0
878# define USBR0DECL(type) DECLEXPORT(type) VBOXCALL
879#else
880# define USBR0DECL(type) DECLIMPORT(type) VBOXCALL
881#endif
882
883/** @def IN_USB_R3
884 * Used to indicate whether we're inside the same link module as
885 * the HC Ring-3 USB device / service.
886 */
887/** @def USBR3DECL(type)
888 * USB device / services HC Ring-3 export or import declaration.
889 * @param type The return type of the function declaration.
890 */
891#ifdef IN_USB_R3
892# define USBR3DECL(type) DECLEXPORT(type) VBOXCALL
893#else
894# define USBR3DECL(type) DECLIMPORT(type) VBOXCALL
895#endif
896
897/** @def IN_USB_GC
898 * Used to indicate whether we're inside the same link module as
899 * the GC USB device.
900 */
901/** @def USBGCDECL(type)
902 * USB device GC export or import declaration.
903 * @param type The return type of the function declaration.
904 */
905#ifdef IN_USB_GC
906# define USBGCDECL(type) DECLEXPORT(type) VBOXCALL
907#else
908# define USBGCDECL(type) DECLIMPORT(type) VBOXCALL
909#endif
910
911/** @def USBDECL(type)
912 * Trap Monitor export or import declaration.
913 * Functions declared using this macro exists in all contexts.
914 * @param type The return type of the function declaration.
915 */
916#if defined(IN_USB_R3) || defined(IN_USB_GC) || defined(IN_USB_R0)
917# define USBDECL(type) DECLEXPORT(type) VBOXCALL
918#else
919# define USBDECL(type) DECLIMPORT(type) VBOXCALL
920#endif
921
922
923
924/** @def IN_USBLIB
925 * Used to indicate whether we're inside the same link module as the USBLib.
926 */
927/** @def USBLIB_DECL
928 * USBLIB export or import declaration.
929 * @param type The return type of the function declaration.
930 */
931#ifdef IN_RING0
932# define USBLIB_DECL(type) type VBOXCALL
933#elif defined(IN_USBLIB)
934# define USBLIB_DECL(type) DECLEXPORT(type) VBOXCALL
935#else
936# define USBLIB_DECL(type) DECLIMPORT(type) VBOXCALL
937#endif
938
939
940
941/** @def IN_INTNET_R3
942 * Used to indicate whether we're inside the same link module as the Ring 3
943 * Internal Networking Service.
944 */
945/** @def INTNETR3DECL(type)
946 * Internal Networking Service export or import declaration.
947 * @param type The return type of the function declaration.
948 */
949#ifdef IN_INTNET_R3
950# define INTNETR3DECL(type) DECLEXPORT(type) VBOXCALL
951#else
952# define INTNETR3DECL(type) DECLIMPORT(type) VBOXCALL
953#endif
954
955/** @def IN_INTNET_R0
956 * Used to indicate whether we're inside the same link module as the R0
957 * Internal Network Service.
958 */
959/** @def INTNETR0DECL(type)
960 * Internal Networking Service export or import declaration.
961 * @param type The return type of the function declaration.
962 */
963#ifdef IN_INTNET_R0
964# define INTNETR0DECL(type) DECLEXPORT(type) VBOXCALL
965#else
966# define INTNETR0DECL(type) DECLIMPORT(type) VBOXCALL
967#endif
968
969
970
971/** @def IN_IOM_R3
972 * Used to indicate whether we're inside the same link module as the Ring 3
973 * Input/Output Monitor.
974 */
975/** @def IOMR3DECL(type)
976 * Input/Output Monitor export or import declaration.
977 * @param type The return type of the function declaration.
978 */
979#ifdef IN_IOM_R3
980# define IOMR3DECL(type) DECLEXPORT(type) VBOXCALL
981#else
982# define IOMR3DECL(type) DECLIMPORT(type) VBOXCALL
983#endif
984
985/** @def IN_IOM_GC
986 * Used to indicate whether we're inside the same link module as the GC
987 * Input/Output Monitor.
988 */
989/** @def IOMGCDECL(type)
990 * Input/Output Monitor export or import declaration.
991 * @param type The return type of the function declaration.
992 */
993#ifdef IN_IOM_GC
994# define IOMGCDECL(type) DECLEXPORT(type) VBOXCALL
995#else
996# define IOMGCDECL(type) DECLIMPORT(type) VBOXCALL
997#endif
998
999/** @def IN_IOM_R0
1000 * Used to indicate whether we're inside the same link module as the R0
1001 * Input/Output Monitor.
1002 */
1003/** @def IOMR0DECL(type)
1004 * Input/Output Monitor export or import declaration.
1005 * @param type The return type of the function declaration.
1006 */
1007#ifdef IN_IOM_R0
1008# define IOMR0DECL(type) DECLEXPORT(type) VBOXCALL
1009#else
1010# define IOMR0DECL(type) DECLIMPORT(type) VBOXCALL
1011#endif
1012
1013/** @def IOMDECL(type)
1014 * Input/Output Monitor export or import declaration.
1015 * Functions declared using this macro exists in all contexts.
1016 * @param type The return type of the function declaration.
1017 */
1018#if defined(IN_IOM_R3) || defined(IN_IOM_GC) || defined(IN_IOM_R0)
1019# define IOMDECL(type) DECLEXPORT(type) VBOXCALL
1020#else
1021# define IOMDECL(type) DECLIMPORT(type) VBOXCALL
1022#endif
1023
1024
1025/** @def IN_VGADEVICE_R3
1026 * Used to indicate whether we're inside the same link module as
1027 * the HC Ring-3 VGA Monitor(/Manager).
1028 */
1029/** @def VGAR3DECL(type)
1030 * VGA Monitor(/Manager) HC Ring-3 export or import declaration.
1031 * @param type The return type of the function declaration.
1032 */
1033#ifdef IN_VGADEVICE_R3
1034# define VGAR3DECL(type) DECLEXPORT(type) VBOXCALL
1035#else
1036# define VGAR3DECL(type) DECLIMPORT(type) VBOXCALL
1037#endif
1038
1039/** @def IN_VGADEVICE_GC
1040 * Used to indicate whether we're inside the same link module as
1041 * the GC VGA Monitor(/Manager).
1042 */
1043/** @def VGAGCDECL(type)
1044 * VGA Monitor(/Manager) HC Ring-3 export or import declaration.
1045 * @param type The return type of the function declaration.
1046 */
1047#ifdef IN_VGADEVICE_GC
1048# define VGAGCDECL(type) DECLEXPORT(type) VBOXCALL
1049#else
1050# define VGAGCDECL(type) DECLIMPORT(type) VBOXCALL
1051#endif
1052
1053/** @def VGADECL(type)
1054 * VGA Monitor(/Manager) export or import declaration.
1055 * Functions declared using this macro exists in all contexts.
1056 * @param type The return type of the function declaration.
1057 */
1058#if defined(IN_VGADEVICE_R3) || defined(IN_VGADEVICE_GC)
1059# define VGADECL(type) DECLEXPORT(type) VBOXCALL
1060#else
1061# define VGADECL(type) DECLIMPORT(type) VBOXCALL
1062#endif
1063
1064
1065/** @def IN_PGM_R3
1066 * Used to indicate whether we're inside the same link module as the Ring 3
1067 * Page Monitor and Manager.
1068 */
1069/** @def PGMR3DECL(type)
1070 * Page Monitor and Manager export or import declaration.
1071 * @param type The return type of the function declaration.
1072 */
1073#ifdef IN_PGM_R3
1074# define PGMR3DECL(type) DECLEXPORT(type) VBOXCALL
1075#else
1076# define PGMR3DECL(type) DECLIMPORT(type) VBOXCALL
1077#endif
1078
1079/** @def IN_PGM_GC
1080 * Used to indicate whether we're inside the same link module as the GC
1081 * Page Monitor and Manager.
1082 */
1083/** @def PGMGCDECL(type)
1084 * Page Monitor and Manager export or import declaration.
1085 * @param type The return type of the function declaration.
1086 */
1087#ifdef IN_PGM_GC
1088# define PGMGCDECL(type) DECLEXPORT(type) VBOXCALL
1089#else
1090# define PGMGCDECL(type) DECLIMPORT(type) VBOXCALL
1091#endif
1092
1093/** @def IN_PGM_R0
1094 * Used to indicate whether we're inside the same link module as the R0
1095 * Page Monitor and Manager.
1096 */
1097/** @def PGMR0DECL(type)
1098 * Page Monitor and Manager export or import declaration.
1099 * @param type The return type of the function declaration.
1100 */
1101#ifdef IN_PGM_R0
1102# define PGMR0DECL(type) DECLEXPORT(type) VBOXCALL
1103#else
1104# define PGMR0DECL(type) DECLIMPORT(type) VBOXCALL
1105#endif
1106
1107/** @def PGMDECL(type)
1108 * Page Monitor and Manager export or import declaration.
1109 * @param type The return type of the function declaration.
1110 */
1111#if defined(IN_PGM_R3) || defined(IN_PGM_R0) || defined(IN_PGM_GC)
1112# define PGMDECL(type) DECLEXPORT(type) VBOXCALL
1113#else
1114# define PGMDECL(type) DECLIMPORT(type) VBOXCALL
1115#endif
1116
1117
1118/** @def IN_DBGF_R3
1119 * Used to indicate whether we're inside the same link module as the Ring 3
1120 * Debugging Facility.
1121 */
1122/** @def DBGFR3DECL(type)
1123 * R3 Debugging Facility export or import declaration.
1124 * @param type The return type of the function declaration.
1125 */
1126#ifdef IN_DBGF_R3
1127# define DBGFR3DECL(type) DECLEXPORT(type) VBOXCALL
1128#else
1129# define DBGFR3DECL(type) DECLIMPORT(type) VBOXCALL
1130#endif
1131
1132/** @def IN_DBGF_R0
1133 * Used to indicate whether we're inside the same link module as the Ring 0
1134 * Debugging Facility.
1135 */
1136/** @def DBGFR0DECL(type)
1137 * R0 Debugging Facility export or import declaration.
1138 * @param type The return type of the function declaration.
1139 */
1140#ifdef IN_DBGF_R0
1141# define DBGFR0DECL(type) DECLEXPORT(type) VBOXCALL
1142#else
1143# define DBGFR0DECL(type) DECLIMPORT(type) VBOXCALL
1144#endif
1145
1146/** @def IN_DBGF_GC
1147 * Used to indicate whether we're inside the same link module as the GC
1148 * Debugging Facility.
1149 */
1150/** @def DBGFGCDECL(type)
1151 * GC Debugging Facility export or import declaration.
1152 * @param type The return type of the function declaration.
1153 */
1154#ifdef IN_DBGF_GC
1155# define DBGFGCDECL(type) DECLEXPORT(type) VBOXCALL
1156#else
1157# define DBGFGCDECL(type) DECLIMPORT(type) VBOXCALL
1158#endif
1159
1160/** @def DBGFGCDECL(type)
1161 * Debugging Facility export or import declaration.
1162 * @param type The return type of the function declaration.
1163 */
1164#if defined(IN_DBGF_R3) || defined(IN_DBGF_R0) || defined(IN_DBGF_GC)
1165# define DBGFDECL(type) DECLEXPORT(type) VBOXCALL
1166#else
1167# define DBGFDECL(type) DECLIMPORT(type) VBOXCALL
1168#endif
1169
1170
1171
1172/** @def IN_SSM_R3
1173 * Used to indicate whether we're inside the same link module as the Ring 3
1174 * Saved State Manager.
1175 */
1176/** @def SSMR3DECL(type)
1177 * R3 Saved State export or import declaration.
1178 * @param type The return type of the function declaration.
1179 */
1180#ifdef IN_SSM_R3
1181# define SSMR3DECL(type) DECLEXPORT(type) VBOXCALL
1182#else
1183# define SSMR3DECL(type) DECLIMPORT(type) VBOXCALL
1184#endif
1185
1186
1187
1188/** @def IN_STAM_R3
1189 * Used to indicate whether we're inside the same link module as the Ring 3
1190 * Statistics Manager.
1191 */
1192/** @def STAMR3DECL(type)
1193 * R3 Statistics Manager export or import declaration.
1194 * @param type The return type of the function declaration.
1195 */
1196#ifdef IN_STAM_R3
1197# define STAMR3DECL(type) DECLEXPORT(type) VBOXCALL
1198#else
1199# define STAMR3DECL(type) DECLIMPORT(type) VBOXCALL
1200#endif
1201
1202/** @def IN_STAM_R0
1203 * Used to indicate whether we're inside the same link module as the Ring 0
1204 * Statistics Manager.
1205 */
1206/** @def STAMR0DECL(type)
1207 * R0 Statistics Manager export or import declaration.
1208 * @param type The return type of the function declaration.
1209 */
1210#ifdef IN_STAM_R0
1211# define STAMR0DECL(type) DECLEXPORT(type) VBOXCALL
1212#else
1213# define STAMR0DECL(type) DECLIMPORT(type) VBOXCALL
1214#endif
1215
1216/** @def IN_STAM_GC
1217 * Used to indicate whether we're inside the same link module as the GC
1218 * Statistics Manager.
1219 */
1220/** @def STAMGCDECL(type)
1221 * GC Statistics Manager export or import declaration.
1222 * @param type The return type of the function declaration.
1223 */
1224#ifdef IN_STAM_GC
1225# define STAMGCDECL(type) DECLEXPORT(type) VBOXCALL
1226#else
1227# define STAMGCDECL(type) DECLIMPORT(type) VBOXCALL
1228#endif
1229
1230/** @def STAMGCDECL(type)
1231 * Debugging Facility export or import declaration.
1232 * @param type The return type of the function declaration.
1233 */
1234#if defined(IN_STAM_R3) || defined(IN_STAM_R0) || defined(IN_STAM_GC)
1235# define STAMDECL(type) DECLEXPORT(type) VBOXCALL
1236#else
1237# define STAMDECL(type) DECLIMPORT(type) VBOXCALL
1238#endif
1239
1240
1241
1242/** @def IN_EM_R3
1243 * Used to indicate whether we're inside the same link module as the Ring 3
1244 * Execution Monitor.
1245 */
1246/** @def EMR3DECL(type)
1247 * Execution Monitor export or import declaration.
1248 * @param type The return type of the function declaration.
1249 */
1250#ifdef IN_EM_R3
1251# define EMR3DECL(type) DECLEXPORT(type) VBOXCALL
1252#else
1253# define EMR3DECL(type) DECLIMPORT(type) VBOXCALL
1254#endif
1255
1256/** @def IN_EM_GC
1257 * Used to indicate whether we're inside the same link module as the GC
1258 * Execution Monitor.
1259 */
1260/** @def EMGCDECL(type)
1261 * Execution Monitor export or import declaration.
1262 * @param type The return type of the function declaration.
1263 */
1264#ifdef IN_EM_GC
1265# define EMGCDECL(type) DECLEXPORT(type) VBOXCALL
1266#else
1267# define EMGCDECL(type) DECLIMPORT(type) VBOXCALL
1268#endif
1269
1270
1271/** @def EMDECL(type)
1272 * Execution Monitor export or import declaration.
1273 * @param type The return type of the function declaration.
1274 */
1275#if defined(IN_EM_R3) || defined(IN_EM_GC) || defined(IN_EM_R0)
1276# define EMDECL(type) DECLEXPORT(type) VBOXCALL
1277#else
1278# define EMDECL(type) DECLIMPORT(type) VBOXCALL
1279#endif
1280
1281
1282/** @def IN_IDE_R3
1283 * Used to indicate whether we're inside the same link module as the Ring 3
1284 * IDE device.
1285 */
1286/** @def IDER3DECL(type)
1287 * Ring-3 IDE device export or import declaration.
1288 * @param type The return type of the function declaration.
1289 */
1290#ifdef IN_IDE_R3
1291# define IDER3DECL(type) DECLEXPORT(type) VBOXCALL
1292#else
1293# define IDER3DECL(type) DECLIMPORT(type) VBOXCALL
1294#endif
1295
1296
1297/** @def IN_VBOXDDU
1298 * Used to indicate whether we're inside the VBoxDDU shared object.
1299 */
1300/** @def VBOXDDU_DECL(type)
1301 * VBoxDDU export or import (ring-3).
1302 * @param type The return type of the function declaration.
1303 */
1304#ifdef IN_VBOXDDU
1305# define VBOXDDU_DECL(type) DECLEXPORT(type) VBOXCALL
1306#else
1307# define VBOXDDU_DECL(type) DECLIMPORT(type) VBOXCALL
1308#endif
1309
1310
1311
1312/** @def IN_REM_R0
1313 * Used to indicate whether we're inside the same link module as
1314 * the HC Ring-0 Recompiled Execution Manager.
1315 */
1316/** @def REMR0DECL(type)
1317 * Recompiled Execution Manager HC Ring-0 export or import declaration.
1318 * @param type The return type of the function declaration.
1319 */
1320#ifdef IN_REM_R0
1321# define REMR0DECL(type) DECLEXPORT(type) VBOXCALL
1322#else
1323# define REMR0DECL(type) DECLIMPORT(type) VBOXCALL
1324#endif
1325
1326/** @def IN_RT_R3
1327 * Used to indicate whether we're inside the same link module as
1328 * the HC Ring-3 Recompiled Execution Manager.
1329 */
1330/** @def RTR3DECL(type)
1331 * Recompiled Execution Manager HC Ring-3 export or import declaration.
1332 * @param type The return type of the function declaration.
1333 */
1334#ifdef IN_REM_R3
1335# define REMR3DECL(type) DECLEXPORT(type) VBOXCALL
1336#else
1337# define REMR3DECL(type) DECLIMPORT(type) VBOXCALL
1338#endif
1339
1340/** @def IN_REM_GC
1341 * Used to indicate whether we're inside the same link module as
1342 * the GC Recompiled Execution Manager.
1343 */
1344/** @def REMGCDECL(type)
1345 * Recompiled Execution Manager HC Ring-3 export or import declaration.
1346 * @param type The return type of the function declaration.
1347 */
1348#ifdef IN_REM_GC
1349# define REMGCDECL(type) DECLEXPORT(type) VBOXCALL
1350#else
1351# define REMGCDECL(type) DECLIMPORT(type) VBOXCALL
1352#endif
1353
1354/** @def REMDECL(type)
1355 * Recompiled Execution Manager export or import declaration.
1356 * Functions declared using this macro exists in all contexts.
1357 * @param type The return type of the function declaration.
1358 */
1359#if defined(IN_REM_R3) || defined(IN_REM_GC) || defined(IN_REM_R0)
1360# define REMDECL(type) DECLEXPORT(type) VBOXCALL
1361#else
1362# define REMDECL(type) DECLIMPORT(type) VBOXCALL
1363#endif
1364
1365
1366
1367
1368/** @def DBGDECL(type)
1369 * Debugger module export or import declaration.
1370 * Functions declared using this exists only in R3 since the
1371 * debugger modules is R3 only.
1372 * @param type The return type of the function declaration.
1373 */
1374#if defined(IN_DBG_R3) || defined(IN_DBG)
1375# define DBGDECL(type) DECLEXPORT(type) VBOXCALL
1376#else
1377# define DBGDECL(type) DECLIMPORT(type) VBOXCALL
1378#endif
1379
1380
1381/** @def NoDmik(expr)
1382 * Turns the given expression into NOOP when DEBUG_dmik is defined. Evaluates
1383 * the expression normally otherwise.
1384 * @param expr Expression to guard.
1385 * @todo r=bird: please rename to NO_DMIK or NOT_DMIK.
1386 */
1387#if defined(DEBUG_dmik)
1388# define NoDmik(expr) do { } while (0)
1389#else
1390# define NoDmik(expr) expr
1391#endif
1392
1393
1394#endif
1395
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