cdefs.h revision 0547b5d21ca43e39c3b6fba8cd9988b1338d61d0
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync/** @file
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync * VirtualBox - Common C and C++ definition.
45565249f149f7562fc6ee85be7ca3a3706e32e6vboxsync */
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync/*
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync * Copyright (C) 2006-2007 Oracle Corporation
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync *
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync * This file is part of VirtualBox Open Source Edition (OSE), as
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync * available from http://www.virtualbox.org. This file is free software;
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync * you can redistribute it and/or modify it under the terms of the GNU
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync * General Public License (GPL) as published by the Free Software
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync * Foundation, in version 2 as it comes in the "COPYING" file of the
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync *
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync * The contents of this file may alternatively be used under the terms
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync * of the Common Development and Distribution License Version 1.0
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync * (CDDL) only, as it comes in the "COPYING.CDDL" file of the
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync * VirtualBox OSE distribution, in which case the provisions of the
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync * CDDL are applicable instead of those of the GPL.
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync *
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync * You may elect to license modified versions of this file under the
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync * terms and conditions of either the GPL or the CDDL or both.
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync */
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync#ifndef ___VBox_cdefs_h
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync#define ___VBox_cdefs_h
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync#include <iprt/cdefs.h>
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync/** @def VBOX_WITH_STATISTICS
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync * When defined all statistics will be included in the build.
45565249f149f7562fc6ee85be7ca3a3706e32e6vboxsync * This is enabled by default in all debug builds.
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync */
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync#ifndef VBOX_WITH_STATISTICS
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync# ifdef DEBUG
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync# define VBOX_WITH_STATISTICS
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync# endif
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync#endif
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync/** @def VBOX_STRICT
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync * Alias for RT_STRICT.
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync */
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync#ifdef RT_STRICT
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync# ifndef VBOX_STRICT
3393c62e395aa8388303d99f765a219efc289158vboxsync# define VBOX_STRICT
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync# endif
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync#endif
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync/*
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync * Shut up DOXYGEN warnings and guide it properly thru the code.
45565249f149f7562fc6ee85be7ca3a3706e32e6vboxsync */
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync#ifdef DOXYGEN_RUNNING
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync#define VBOX_WITH_STATISTICS
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync#define VBOX_STRICT
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync#define IN_DBG
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync#define IN_DIS
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync#define IN_INTNET_R0
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync#define IN_INTNET_R3
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync#define IN_PCIRAW_R0
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync#define IN_PCIRAW_R3
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync#define IN_REM_R3
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync#define IN_SUP_R0
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync#define IN_SUP_R3
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync#define IN_SUP_RC
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync#define IN_SUP_STATIC
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync#define IN_USBLIB
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync#define IN_VBOXDDU
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync#define IN_VMM_RC
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync#define IN_VMM_R0
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync#define IN_VMM_R3
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync#define IN_VMM_STATIC
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync#endif
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync/** @def VBOXCALL
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync * The standard calling convention for VBOX interfaces.
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync */
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync#define VBOXCALL RTCALL
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync/** @def IN_DIS
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync * Used to indicate whether we're inside the same link module as the
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync * disassembler.
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync */
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync/** @def DISDECL(type)
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync * Disassembly export or import declaration.
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync * @param type The return type of the function declaration.
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync */
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync#if defined(IN_DIS)
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync# define DISDECL(type) DECLEXPORT(type) VBOXCALL
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync#else
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync# define DISDECL(type) DECLIMPORT(type) VBOXCALL
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync#endif
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync/** @def IN_DBG
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync * Used to indicate whether we're inside the same link module as the debugger
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync * console, gui, and related things (ring-3).
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync */
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync/** @def DBGDECL(type)
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync * Debugger module export or import declaration.
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync * Functions declared using this exists only in R3 since the
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync * debugger modules is R3 only.
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync * @param type The return type of the function declaration.
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync */
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync#if defined(IN_DBG_R3) || defined(IN_DBG)
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync# define DBGDECL(type) DECLEXPORT(type) VBOXCALL
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync#else
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync# define DBGDECL(type) DECLIMPORT(type) VBOXCALL
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync#endif
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync/** @def IN_INTNET_R3
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync * Used to indicate whether we're inside the same link module as the Ring-3
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync * Internal Networking Service.
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync */
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync/** @def INTNETR3DECL(type)
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync * Internal Networking Service export or import declaration.
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync * @param type The return type of the function declaration.
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync */
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync#ifdef IN_INTNET_R3
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync# define INTNETR3DECL(type) DECLEXPORT(type) VBOXCALL
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync#else
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync# define INTNETR3DECL(type) DECLIMPORT(type) VBOXCALL
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync#endif
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync/** @def IN_INTNET_R0
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync * Used to indicate whether we're inside the same link module as the R0
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync * Internal Network Service.
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync */
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync/** @def INTNETR0DECL(type)
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync * Internal Networking Service export or import declaration.
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync * @param type The return type of the function declaration.
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync */
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync#ifdef IN_INTNET_R0
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync# define INTNETR0DECL(type) DECLEXPORT(type) VBOXCALL
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync#else
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync# define INTNETR0DECL(type) DECLIMPORT(type) VBOXCALL
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync#endif
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync/** @def IN_PCIRAW_R3
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync * Used to indicate whether we're inside the same link module as the Ring-3
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync * PCI passthrough support.
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync */
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync/** @def PCIRAWR3DECL(type)
4b30f6c72b07654509606857da385afcc09aaae3vboxsync * PCI passthrough export or import declaration.
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync * @param type The return type of the function declaration.
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync */
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync#ifdef IN_PCIRAW_R3
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync# define PCIRAWR3DECL(type) DECLEXPORT(type) VBOXCALL
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync#else
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync# define PCIRAWR3DECL(type) DECLIMPORT(type) VBOXCALL
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync#endif
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync/** @def IN_PCIRAW_R0
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync * Used to indicate whether we're inside the same link module as the R0
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync * PCI passthrough support.
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync */
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync/** @def PCIRAWR0DECL(type)
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync * PCI passthroug export or import declaration.
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync * @param type The return type of the function declaration.
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync */
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync#ifdef IN_PCIRAW_R0
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync# define PCIRAWR0DECL(type) DECLEXPORT(type) VBOXCALL
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync#else
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync# define PCIRAWR0DECL(type) DECLIMPORT(type) VBOXCALL
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync#endif
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync/** @def IN_REM_R3
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync * Used to indicate whether we're inside the same link module as
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync * the HC Ring-3 Recompiled Execution Manager.
4b30f6c72b07654509606857da385afcc09aaae3vboxsync */
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync/** @def REMR3DECL(type)
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync * Recompiled Execution Manager HC Ring-3 export or import declaration.
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync * @param type The return type of the function declaration.
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync */
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync#ifdef IN_REM_R3
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync# define REMR3DECL(type) DECLEXPORT(type) VBOXCALL
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync#else
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync# define REMR3DECL(type) DECLIMPORT(type) VBOXCALL
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync#endif
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync/** @def IN_SUP_R3
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync * Used to indicate whether we're inside the same link module as the Ring-3
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync * Support Library or not.
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync */
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync/** @def SUPR3DECL(type)
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync * Support library export or import declaration.
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync * @param type The return type of the function declaration.
4b30f6c72b07654509606857da385afcc09aaae3vboxsync */
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync#ifdef IN_SUP_R3
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync# define SUPR3DECL(type) DECLEXPORT(type) VBOXCALL
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync#else
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync# define SUPR3DECL(type) DECLIMPORT(type) VBOXCALL
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync#endif
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync/** @def IN_SUP_R0
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync * Used to indicate whether we're inside the same link module as the Ring-0
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync * Support Library or not.
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync */
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync/** @def IN_SUP_STATIC
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync * Used to indicate that the Support Library is built or used as a static
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync * library.
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync */
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync/** @def SUPR0DECL(type)
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync * Support library export or import declaration.
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync * @param type The return type of the function declaration.
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync */
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync#ifdef IN_SUP_R0
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync# ifdef IN_SUP_STATIC
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync# define SUPR0DECL(type) DECLHIDDEN(type) VBOXCALL
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync# else
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync# define SUPR0DECL(type) DECLEXPORT(type) VBOXCALL
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync# endif
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync#else
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync# ifdef IN_SUP_STATIC
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync# define SUPR0DECL(type) DECLHIDDEN(type) VBOXCALL
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync# else
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync# define SUPR0DECL(type) DECLIMPORT(type) VBOXCALL
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync# endif
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync#endif
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync/** @def IN_SUP_RC
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync * Used to indicate whether we're inside the same link module as the RC Support
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync * Library or not.
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync */
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync/** @def SUPRCDECL(type)
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync * Support library export or import declaration.
1c2c968fd241148110002d75b2c0fdeddc211e14vboxsync * @param type The return type of the function declaration.
1c2c968fd241148110002d75b2c0fdeddc211e14vboxsync */
1c2c968fd241148110002d75b2c0fdeddc211e14vboxsync#ifdef IN_SUP_RC
1c2c968fd241148110002d75b2c0fdeddc211e14vboxsync# define SUPRCDECL(type) DECLEXPORT(type) VBOXCALL
1c2c968fd241148110002d75b2c0fdeddc211e14vboxsync#else
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync# define SUPRCDECL(type) DECLIMPORT(type) VBOXCALL
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync#endif
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync/** @def IN_SUP_R0
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync * Used to indicate whether we're inside the same link module as the Ring-0
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync * Support Library or not.
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync */
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync/** @def SUPR0DECL(type)
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync * Support library export or import declaration.
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync * @param type The return type of the function declaration.
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync */
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync#if defined(IN_SUP_R0) || defined(IN_SUP_R3) || defined(IN_SUP_RC)
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync# define SUPDECL(type) DECLEXPORT(type) VBOXCALL
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync#else
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync# define SUPDECL(type) DECLIMPORT(type) VBOXCALL
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync#endif
0a769a6be37f526faeabe88f77422ee6291afa37vboxsync
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync/** @def IN_USBLIB
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync * Used to indicate whether we're inside the same link module as the USBLib.
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync */
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync/** @def USBLIB_DECL
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync * USBLIB export or import declaration.
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync * @param type The return type of the function declaration.
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync */
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync#ifdef IN_RING0
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync# define USBLIB_DECL(type) type VBOXCALL
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync#elif defined(IN_USBLIB)
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync# define USBLIB_DECL(type) DECLEXPORT(type) VBOXCALL
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync#else
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync# define USBLIB_DECL(type) DECLIMPORT(type) VBOXCALL
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync#endif
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync/** @def IN_VMM_STATIC
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync * Used to indicate that the virtual machine monitor is built or used as a
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync * static library.
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync */
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync/** @def IN_VMM_R3
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync * Used to indicate whether we're inside the same link module as the ring 3 part of the
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync * virtual machine monitor or not.
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync */
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync/** @def VMMR3DECL
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync * Ring-3 VMM export or import declaration.
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync * @param type The return type of the function declaration.
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync */
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync#ifdef IN_VMM_R3
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync# ifdef IN_VMM_STATIC
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync# define VMMR3DECL(type) DECLHIDDEN(type) VBOXCALL
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync# else
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync# define VMMR3DECL(type) DECLEXPORT(type) VBOXCALL
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync# endif
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync#elif defined(IN_RING3)
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync# ifdef IN_VMM_STATIC
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync# define VMMR3DECL(type) DECLHIDDEN(type) VBOXCALL
3a5d16e1911830b585d10278ea2cdbb408e261e6vboxsync# else
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync# define VMMR3DECL(type) DECLIMPORT(type) VBOXCALL
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync# endif
1c2c968fd241148110002d75b2c0fdeddc211e14vboxsync#else
3a5d16e1911830b585d10278ea2cdbb408e261e6vboxsync# define VMMR3DECL(type) DECL_INVALID(type)
3a5d16e1911830b585d10278ea2cdbb408e261e6vboxsync#endif
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync/** @def IN_VMM_R0
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync * Used to indicate whether we're inside the same link module as the ring-0 part
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync * of the virtual machine monitor or not.
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync */
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync/** @def VMMR0DECL
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync * Ring-0 VMM export or import declaration.
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync * @param type The return type of the function declaration.
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync */
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync#ifdef IN_VMM_R0
0a769a6be37f526faeabe88f77422ee6291afa37vboxsync# define VMMR0DECL(type) DECLEXPORT(type) VBOXCALL
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync#elif defined(IN_RING0)
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync# define VMMR0DECL(type) DECLIMPORT(type) VBOXCALL
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync#else
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync# define VMMR0DECL(type) DECL_INVALID(type)
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync#endif
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync/** @def IN_VMM_RC
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync * Used to indicate whether we're inside the same link module as the raw-mode
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync * context part of the virtual machine monitor or not.
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync */
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync/** @def VMMRCDECL
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync * Raw-mode context VMM export or import declaration.
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync * @param type The return type of the function declaration.
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync */
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync#ifdef IN_VMM_RC
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync# define VMMRCDECL(type) DECLEXPORT(type) VBOXCALL
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync#elif defined(IN_RC)
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync# define VMMRCDECL(type) DECLIMPORT(type) VBOXCALL
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync#else
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync# define VMMRCDECL(type) DECL_INVALID(type)
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync#endif
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync/** @def VMMRZDECL
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync * Ring-0 and Raw-mode context VMM export or import declaration.
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync * @param type The return type of the function declaration.
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync */
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync#if defined(IN_VMM_R0) || defined(IN_VMM_RC)
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync# define VMMRZDECL(type) DECLEXPORT(type) VBOXCALL
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync#elif defined(IN_RING0) || defined(IN_RZ)
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync# define VMMRZDECL(type) DECLIMPORT(type) VBOXCALL
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync#else
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync# define VMMRZDECL(type) DECL_INVALID(type)
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync#endif
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync/** @def VMMDECL
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync * VMM export or import declaration.
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync * @param type The return type of the function declaration.
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync */
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync#ifdef IN_VMM_STATIC
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync# define VMMDECL(type) DECLHIDDEN(type) VBOXCALL
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync#elif defined(IN_VMM_R3) || defined(IN_VMM_R0) || defined(IN_VMM_RC)
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync# define VMMDECL(type) DECLEXPORT(type) VBOXCALL
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync#else
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync# define VMMDECL(type) DECLIMPORT(type) VBOXCALL
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync#endif
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync/** @def VMM_INT_DECL
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync * VMM internal function.
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync * @param type The return type of the function declaration.
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync */
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync#if defined(IN_VMM_R3) || defined(IN_VMM_R0) || defined(IN_VMM_RC)
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync# define VMM_INT_DECL(type) DECLHIDDEN(type) VBOXCALL
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync#else
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync# define VMM_INT_DECL(type) DECL_INVALID(type)
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync#endif
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync/** @def VMMR3_INT_DECL
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync * VMM internal function, ring-3.
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync * @param type The return type of the function declaration.
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync */
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync#ifdef IN_VMM_R3
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync# define VMMR3_INT_DECL(type) DECLHIDDEN(type) VBOXCALL
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync#else
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync# define VMMR3_INT_DECL(type) DECL_INVALID(type)
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync#endif
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync/** @def VMMR0_INT_DECL
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync * VMM internal function, ring-0.
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync * @param type The return type of the function declaration.
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync */
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync#ifdef IN_VMM_R0
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync# define VMMR0_INT_DECL(type) DECLHIDDEN(type) VBOXCALL
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync#else
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync# define VMMR0_INT_DECL(type) DECL_INVALID(type)
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync#endif
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync/** @def VMMRC_INT_DECL
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync * VMM internal function, raw-mode context.
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync * @param type The return type of the function declaration.
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync */
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync#ifdef IN_VMM_RC
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync# define VMMRC_INT_DECL(type) DECLHIDDEN(type) VBOXCALL
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync#else
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync# define VMMRC_INT_DECL(type) DECL_INVALID(type)
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync#endif
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync/** @def VMMRZ_INT_DECL
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync * VMM internal function, ring-0 + raw-mode context.
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync * @param type The return type of the function declaration.
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync */
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync#ifdef IN_VMM_RZ
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync# define VMMRZ_INT_DECL(type) DECLHIDDEN(type) VBOXCALL
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync#else
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync# define VMMRZ_INT_DECL(type) DECL_INVALID(type)
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync#endif
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync
bb73206f5ad484c56a70984ee9897e9ffee18b8bvboxsync/** @def IN_VBOXDDU
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync * Used to indicate whether we're inside the VBoxDDU shared object.
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync */
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync/** @def VBOXDDU_DECL(type)
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync * VBoxDDU export or import (ring-3).
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync * @param type The return type of the function declaration.
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync */
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync#ifdef IN_VBOXDDU
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync# ifdef IN_VBOXDDU_STATIC
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync# define VBOXDDU_DECL(type) type
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync# else
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync# define VBOXDDU_DECL(type) DECLEXPORT(type) VBOXCALL
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync# endif
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync#else
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync# define VBOXDDU_DECL(type) DECLIMPORT(type) VBOXCALL
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync#endif
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync#endif
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync
84eeabfd29e718854e00e795879dab6ce61469e5vboxsync