types.h revision b63da7c87ee97d237d799dc5d275a70a546b5588
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync/** @file
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync * IPRT - Types.
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync */
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync/*
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync * Copyright (C) 2006-2010 Oracle Corporation
3f1e0eea71cabeb90529e546f16eb7aee513fde9vboxsync *
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync * This file is part of VirtualBox Open Source Edition (OSE), as
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync * available from http://www.virtualbox.org. This file is free software;
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync * you can redistribute it and/or modify it under the terms of the GNU
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync * General Public License (GPL) as published by the Free Software
a16eb14ad7a4b5ef91ddc22d3e8e92d930f736fcvboxsync * Foundation, in version 2 as it comes in the "COPYING" file of the
a16eb14ad7a4b5ef91ddc22d3e8e92d930f736fcvboxsync * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
a16eb14ad7a4b5ef91ddc22d3e8e92d930f736fcvboxsync * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
a16eb14ad7a4b5ef91ddc22d3e8e92d930f736fcvboxsync *
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync * The contents of this file may alternatively be used under the terms
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync * of the Common Development and Distribution License Version 1.0
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync * (CDDL) only, as it comes in the "COPYING.CDDL" file of the
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync * VirtualBox OSE distribution, in which case the provisions of the
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync * CDDL are applicable instead of those of the GPL.
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync *
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync * You may elect to license modified versions of this file under the
43747b1f0bc8302a238fb35e55857a5e9aa1933dvboxsync * terms and conditions of either the GPL or the CDDL or both.
43747b1f0bc8302a238fb35e55857a5e9aa1933dvboxsync */
43747b1f0bc8302a238fb35e55857a5e9aa1933dvboxsync
43747b1f0bc8302a238fb35e55857a5e9aa1933dvboxsync#ifndef ___iprt_types_h
7e960d3a0a8a3a84d7aba2cca45d72b1c31cc97bvboxsync#define ___iprt_types_h
43747b1f0bc8302a238fb35e55857a5e9aa1933dvboxsync
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync#include <iprt/cdefs.h>
0c437bb10c61b229407a7517efde04dfe3b1e4a1vboxsync#include <iprt/stdint.h>
43747b1f0bc8302a238fb35e55857a5e9aa1933dvboxsync
0c437bb10c61b229407a7517efde04dfe3b1e4a1vboxsync/*
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync * Include standard C types.
43747b1f0bc8302a238fb35e55857a5e9aa1933dvboxsync */
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync#ifndef IPRT_NO_CRT
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync# if defined(RT_OS_DARWIN) && defined(KERNEL)
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync /*
2f0d866e126dd288169fed591c259c1c6b4016e5vboxsync * Kludge for the darwin kernel:
b74ca013e5f201a2dd371e6c438433ceac12af30vboxsync * stddef.h is missing IIRC.
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync */
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync# ifndef _PTRDIFF_T
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync# define _PTRDIFF_T
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync typedef __darwin_ptrdiff_t ptrdiff_t;
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync# endif
590bfe12ce22cd3716448fbb9f4dc51664bfe5e2vboxsync# include <sys/types.h>
223cf005b18af2c21352a70693ebaf0582f68ebcvboxsync
223cf005b18af2c21352a70693ebaf0582f68ebcvboxsync# elif defined(RT_OS_FREEBSD) && defined(_KERNEL)
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync /*
afed5ab737f4aacfae3fe73776f40e989190a7cavboxsync * Kludge for the FreeBSD kernel:
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync * stddef.h and sys/types.h have slightly different offsetof definitions
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync * when compiling in kernel mode. This is just to make GCC shut up.
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync */
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync# ifndef _STDDEF_H_
0174432b2b1a760b89840ba696f7ba51def65dddvboxsync# undef offsetof
2daaccf68be3773aee600c5c3e48bcf5401418a6vboxsync# endif
0174432b2b1a760b89840ba696f7ba51def65dddvboxsync# include <sys/stddef.h>
70aa086e9e9d2f85d2e997d0e69169018a001e54vboxsync# ifndef _SYS_TYPES_H_
2634ec5cbf8f1fa0a968cd4664ead6df1fed730dvboxsync# undef offsetof
614cbe11a7e5588dc8d369e223174b1441a09359vboxsync# endif
7666082b743c5e146a8cee6cc794ff4bc3fd0ffdvboxsync# include <sys/types.h>
7666082b743c5e146a8cee6cc794ff4bc3fd0ffdvboxsync# ifndef offsetof
7666082b743c5e146a8cee6cc794ff4bc3fd0ffdvboxsync# error "offsetof is not defined..."
7666082b743c5e146a8cee6cc794ff4bc3fd0ffdvboxsync# endif
7666082b743c5e146a8cee6cc794ff4bc3fd0ffdvboxsync
7666082b743c5e146a8cee6cc794ff4bc3fd0ffdvboxsync# elif defined(RT_OS_FREEBSD) && HC_ARCH_BITS == 64 && defined(RT_ARCH_X86)
590bfe12ce22cd3716448fbb9f4dc51664bfe5e2vboxsync /*
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync * Kludge for compiling 32-bit code on a 64-bit FreeBSD:
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync * FreeBSD declares uint64_t and int64_t wrong (long unsigned and long int
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync * though they need to be long long unsigned and long long int). These
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync * defines conflict with our decleration in stdint.h. Adding the defines
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync * below omits the definitions in the system header.
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync */
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync# include <stddef.h>
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync# define _UINT64_T_DECLARED
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync# define _INT64_T_DECLARED
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync# include <sys/types.h>
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync# elif defined(RT_OS_LINUX) && defined(__KERNEL__)
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync /*
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync * Kludge for the linux kernel:
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync * 1. sys/types.h doesn't mix with the kernel.
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync * 2. Starting with 2.6.19, linux/types.h typedefs bool and linux/stddef.h
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync * declares false and true as enum values.
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync * 3. Starting with 2.6.24, linux/types.h typedefs uintptr_t.
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync * We work around these issues here and nowhere else.
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync */
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync# include <stddef.h>
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync# if defined(__cplusplus)
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync typedef bool _Bool;
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync# endif
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync# define bool linux_bool
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync# define true linux_true
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync# define false linux_false
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync# define uintptr_t linux_uintptr_t
f351fab06d1e1507b72f5c574df71193061fd393vboxsync# ifndef AUTOCONF_INCLUDED
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync# include <linux/autoconf.h>
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync# endif
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync# include <linux/types.h>
b1c3cdef473df2fbc621d5da81acc82dbfb8a11avboxsync# include <linux/stddef.h>
a11c569636fa6838bd423f4631a9660a5a84204bvboxsync# undef uintptr_t
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync# ifdef __GNUC__
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync# if (__GNUC__ * 100 + __GNUC_MINOR__) <= 400
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync /*
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync * <linux/compiler-gcc{3,4}.h> does
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync * #define __inline__ __inline__ __attribute__((always_inline))
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync * in some older Linux kernels. Forcing inlining will fail for some RTStrA*
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync * functions with gcc <= 4.0 due to passing variable argument lists.
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync */
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync# undef __inline__
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync# define __inline__ __inline__
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync# endif
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync# endif
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync# undef false
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync# undef true
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync# undef bool
3ecf9412133496b2aeb090cfd33a286404ec59fbvboxsync
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync# else
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync# include <stddef.h>
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync# include <sys/types.h>
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync# endif
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync/* Define any types missing from sys/types.h on windows. */
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync# ifdef _MSC_VER
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync# undef ssize_t
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync typedef intptr_t ssize_t;
750d4d0506a38b2e80c997075d40aad474e675fbvboxsync# endif
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync#else /* no crt */
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync# include <iprt/nocrt/compiler/compiler.h>
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync#endif /* no crt */
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync/** @defgroup grp_rt_types IPRT Base Types
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync * @{
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync */
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync
aaeb2e2f6ed5b164f1dec9a16a7adeb84f64cf31vboxsync/* define wchar_t, we don't wanna include all the wcsstuff to get this. */
223cf005b18af2c21352a70693ebaf0582f68ebcvboxsync#ifdef _MSC_VER
b74ca013e5f201a2dd371e6c438433ceac12af30vboxsync# ifndef _WCHAR_T_DEFINED
b2f6d678ae33b72db5c41199a3e632454f48cfa1vboxsync typedef unsigned short wchar_t;
b74ca013e5f201a2dd371e6c438433ceac12af30vboxsync# define _WCHAR_T_DEFINED
b74ca013e5f201a2dd371e6c438433ceac12af30vboxsync# endif
b74ca013e5f201a2dd371e6c438433ceac12af30vboxsync#endif
b74ca013e5f201a2dd371e6c438433ceac12af30vboxsync#ifdef __GNUC__
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync/** @todo wchar_t on GNUC */
2afbe132eb7931e0125141eabe3a48e08f1ffab5vboxsync#endif
2afbe132eb7931e0125141eabe3a48e08f1ffab5vboxsync
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync/*
576d4214137bce409cdcf01e8df4a0bca5e0b2d1vboxsync * C doesn't have bool.
2afbe132eb7931e0125141eabe3a48e08f1ffab5vboxsync */
b74ca013e5f201a2dd371e6c438433ceac12af30vboxsync#ifndef __cplusplus
b74ca013e5f201a2dd371e6c438433ceac12af30vboxsync# if defined(__GNUC__)
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync# if defined(RT_OS_LINUX) && __GNUC__ < 3
72ef2b9fc5ffc01d0dabd5052d6e8baa3a952773vboxsynctypedef uint8_t bool;
2afbe132eb7931e0125141eabe3a48e08f1ffab5vboxsync# else
b74ca013e5f201a2dd371e6c438433ceac12af30vboxsync# if defined(RT_OS_DARWIN) && defined(_STDBOOL_H)
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync# undef bool
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync# endif
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsynctypedef _Bool bool;
541071eef3db0e3e0e5497bb4b692efee42b1ad0vboxsync# endif
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync# else
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsynctypedef unsigned char bool;
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync# endif
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync# ifndef true
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync# define true (1)
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync# endif
42c1972c22e09797b4b24afbd0ec114ed076c37cvboxsync# ifndef false
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync# define false (0)
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync# endif
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync#endif
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync/**
9e4166cf5ed4940f506bc718ea6c89bf7ed252c8vboxsync * 128-bit unsigned integer.
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync */
541071eef3db0e3e0e5497bb4b692efee42b1ad0vboxsync#if defined(__GNUC__) && defined(RT_ARCH_AMD64)
541071eef3db0e3e0e5497bb4b692efee42b1ad0vboxsynctypedef __uint128_t uint128_t;
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync#else
1e3cd9c9c95ff352da1331a1789b05fd012c880dvboxsynctypedef struct uint128_s
2afbe132eb7931e0125141eabe3a48e08f1ffab5vboxsync{
2afbe132eb7931e0125141eabe3a48e08f1ffab5vboxsync# ifdef RT_BIG_ENDIAN
2afbe132eb7931e0125141eabe3a48e08f1ffab5vboxsync uint64_t Hi;
8a132edc1577cbe2a19cd778c1b2bea6ae5e8515vboxsync uint64_t Lo;
69deddbc68802f1cf1c3a404a9f816b8accb3385vboxsync# else
3ecd8008b81f02a04220705ae0033142af363280vboxsync uint64_t Lo;
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync uint64_t Hi;
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync# endif
576d4214137bce409cdcf01e8df4a0bca5e0b2d1vboxsync} uint128_t;
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync#endif
2634ec5cbf8f1fa0a968cd4664ead6df1fed730dvboxsync
2634ec5cbf8f1fa0a968cd4664ead6df1fed730dvboxsync
2634ec5cbf8f1fa0a968cd4664ead6df1fed730dvboxsync/**
2634ec5cbf8f1fa0a968cd4664ead6df1fed730dvboxsync * 128-bit signed integer.
2634ec5cbf8f1fa0a968cd4664ead6df1fed730dvboxsync */
2634ec5cbf8f1fa0a968cd4664ead6df1fed730dvboxsync#if defined(__GNUC__) && defined(RT_ARCH_AMD64)
2634ec5cbf8f1fa0a968cd4664ead6df1fed730dvboxsynctypedef __int128_t int128_t;
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync#else
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsynctypedef struct int128_s
3ecd8008b81f02a04220705ae0033142af363280vboxsync{
3ecd8008b81f02a04220705ae0033142af363280vboxsync# ifdef RT_BIG_ENDIAN
22e281e75ed636601178296c6daebda8f1d17c59vboxsync int64_t Hi;
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync uint64_t Lo;
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync# else
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync uint64_t Lo;
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync int64_t Hi;
b978e5849454446957177fd47ee98609ab0457a6vboxsync# endif
9984bae4ef25be8afd95d184308adcfef6e2ec0dvboxsync} int128_t;
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync#endif
247b55faa8d054157f2481e68caca36f4dc9542cvboxsync
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync/**
b74ca013e5f201a2dd371e6c438433ceac12af30vboxsync * 16-bit unsigned integer union.
57399ab65e2825c324fb9dcb4642d4ae2c232509vboxsync */
22e281e75ed636601178296c6daebda8f1d17c59vboxsynctypedef union RTUINT16U
b74ca013e5f201a2dd371e6c438433ceac12af30vboxsync{
b40179b44fea65b72b2f226f62af1ed7bd3c48fcvboxsync /** natural view. */
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync uint16_t u;
b40179b44fea65b72b2f226f62af1ed7bd3c48fcvboxsync
82e90599291da476b2de7c8db33cfb0f2cbac774vboxsync /** 16-bit view. */
82e90599291da476b2de7c8db33cfb0f2cbac774vboxsync uint16_t au16[1];
4b8fcf8e4d11536879a1f6e66279ba0c363a7eaevboxsync /** 8-bit view. */
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync uint8_t au8[2];
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync /** 16-bit hi/lo view. */
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync struct
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync {
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync#ifdef RT_BIG_ENDIAN
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync uint8_t Hi;
533ffcb943c4af2c5fe6385d816d0ba3eda9383bvboxsync uint8_t Lo;
b978e5849454446957177fd47ee98609ab0457a6vboxsync#else
9984bae4ef25be8afd95d184308adcfef6e2ec0dvboxsync uint8_t Lo;
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync uint8_t Hi;
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync#endif
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync } s;
247b55faa8d054157f2481e68caca36f4dc9542cvboxsync} RTUINT16U;
2634ec5cbf8f1fa0a968cd4664ead6df1fed730dvboxsync/** Pointer to a 16-bit unsigned integer union. */
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsynctypedef RTUINT16U *PRTUINT16U;
b74ca013e5f201a2dd371e6c438433ceac12af30vboxsync/** Pointer to a const 32-bit unsigned integer union. */
22e281e75ed636601178296c6daebda8f1d17c59vboxsynctypedef const RTUINT16U *PCRTUINT16U;
b74ca013e5f201a2dd371e6c438433ceac12af30vboxsync
b74ca013e5f201a2dd371e6c438433ceac12af30vboxsync
b40179b44fea65b72b2f226f62af1ed7bd3c48fcvboxsync/**
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync * 32-bit unsigned integer union.
2634ec5cbf8f1fa0a968cd4664ead6df1fed730dvboxsync */
82e90599291da476b2de7c8db33cfb0f2cbac774vboxsynctypedef union RTUINT32U
82e90599291da476b2de7c8db33cfb0f2cbac774vboxsync{
2634ec5cbf8f1fa0a968cd4664ead6df1fed730dvboxsync /** natural view. */
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync uint32_t u;
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync /** Hi/Low view. */
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync struct
533ffcb943c4af2c5fe6385d816d0ba3eda9383bvboxsync {
533ffcb943c4af2c5fe6385d816d0ba3eda9383bvboxsync#ifdef RT_BIG_ENDIAN
00599f6d39cc25ca39845c2433cd75de7b9f6971vboxsync uint16_t Hi;
00599f6d39cc25ca39845c2433cd75de7b9f6971vboxsync uint16_t Lo;
00599f6d39cc25ca39845c2433cd75de7b9f6971vboxsync#else
00599f6d39cc25ca39845c2433cd75de7b9f6971vboxsync uint16_t Lo;
533ffcb943c4af2c5fe6385d816d0ba3eda9383bvboxsync uint16_t Hi;
533ffcb943c4af2c5fe6385d816d0ba3eda9383bvboxsync#endif
533ffcb943c4af2c5fe6385d816d0ba3eda9383bvboxsync } s;
533ffcb943c4af2c5fe6385d816d0ba3eda9383bvboxsync /** Word view. */
9984bae4ef25be8afd95d184308adcfef6e2ec0dvboxsync struct
00599f6d39cc25ca39845c2433cd75de7b9f6971vboxsync {
e50404712a2b5234c42bdf9740bddab5729ba188vboxsync#ifdef RT_BIG_ENDIAN
b978e5849454446957177fd47ee98609ab0457a6vboxsync uint16_t w1;
57399ab65e2825c324fb9dcb4642d4ae2c232509vboxsync uint16_t w0;
533ffcb943c4af2c5fe6385d816d0ba3eda9383bvboxsync#else
57399ab65e2825c324fb9dcb4642d4ae2c232509vboxsync uint16_t w0;
533ffcb943c4af2c5fe6385d816d0ba3eda9383bvboxsync uint16_t w1;
13ba5527caaa9b8c4fee29f22e374fa67c4c6f72vboxsync#endif
1843553dbdf4e46417158b4c6348c503adf10740vboxsync } Words;
1843553dbdf4e46417158b4c6348c503adf10740vboxsync
1999ae03c34840fa4d712fd2e020120b2cb7182avboxsync /** 32-bit view. */
e0b9d3c357adf9b7d05f55540e86f22943fc4b23vboxsync uint32_t au32[1];
1843553dbdf4e46417158b4c6348c503adf10740vboxsync /** 16-bit view. */
806d0b554daa555364af5f87bc96eccbe760db7avboxsync uint16_t au16[2];
1843553dbdf4e46417158b4c6348c503adf10740vboxsync /** 8-bit view. */
13ba5527caaa9b8c4fee29f22e374fa67c4c6f72vboxsync uint8_t au8[4];
1843553dbdf4e46417158b4c6348c503adf10740vboxsync} RTUINT32U;
1843553dbdf4e46417158b4c6348c503adf10740vboxsync/** Pointer to a 32-bit unsigned integer union. */
1843553dbdf4e46417158b4c6348c503adf10740vboxsynctypedef RTUINT32U *PRTUINT32U;
22e281e75ed636601178296c6daebda8f1d17c59vboxsync/** Pointer to a const 32-bit unsigned integer union. */
34e34d3656484dde89a9c7b57fcbf7048d2fdb13vboxsynctypedef const RTUINT32U *PCRTUINT32U;
1843553dbdf4e46417158b4c6348c503adf10740vboxsync
1843553dbdf4e46417158b4c6348c503adf10740vboxsync
4b8fcf8e4d11536879a1f6e66279ba0c363a7eaevboxsync/**
1843553dbdf4e46417158b4c6348c503adf10740vboxsync * 64-bit unsigned integer union.
ebbb1f6c7e8bae363a4efda4b35b58c8467d24bcvboxsync */
1843553dbdf4e46417158b4c6348c503adf10740vboxsynctypedef union RTUINT64U
9e4166cf5ed4940f506bc718ea6c89bf7ed252c8vboxsync{
9e4166cf5ed4940f506bc718ea6c89bf7ed252c8vboxsync /** Natural view. */
533ffcb943c4af2c5fe6385d816d0ba3eda9383bvboxsync uint64_t u;
1843553dbdf4e46417158b4c6348c503adf10740vboxsync /** Hi/Low view. */
1843553dbdf4e46417158b4c6348c503adf10740vboxsync struct
ebbb1f6c7e8bae363a4efda4b35b58c8467d24bcvboxsync {
13ba5527caaa9b8c4fee29f22e374fa67c4c6f72vboxsync#ifdef RT_BIG_ENDIAN
1843553dbdf4e46417158b4c6348c503adf10740vboxsync uint32_t Hi;
1843553dbdf4e46417158b4c6348c503adf10740vboxsync uint32_t Lo;
1999ae03c34840fa4d712fd2e020120b2cb7182avboxsync#else
e0b9d3c357adf9b7d05f55540e86f22943fc4b23vboxsync uint32_t Lo;
1843553dbdf4e46417158b4c6348c503adf10740vboxsync uint32_t Hi;
806d0b554daa555364af5f87bc96eccbe760db7avboxsync#endif
1843553dbdf4e46417158b4c6348c503adf10740vboxsync } s;
13ba5527caaa9b8c4fee29f22e374fa67c4c6f72vboxsync /** Double-Word view. */
1843553dbdf4e46417158b4c6348c503adf10740vboxsync struct
1843553dbdf4e46417158b4c6348c503adf10740vboxsync {
1843553dbdf4e46417158b4c6348c503adf10740vboxsync#ifdef RT_BIG_ENDIAN
22e281e75ed636601178296c6daebda8f1d17c59vboxsync uint32_t dw1;
34e34d3656484dde89a9c7b57fcbf7048d2fdb13vboxsync uint32_t dw0;
1843553dbdf4e46417158b4c6348c503adf10740vboxsync#else
1843553dbdf4e46417158b4c6348c503adf10740vboxsync uint32_t dw0;
4b8fcf8e4d11536879a1f6e66279ba0c363a7eaevboxsync uint32_t dw1;
1843553dbdf4e46417158b4c6348c503adf10740vboxsync#endif
ebbb1f6c7e8bae363a4efda4b35b58c8467d24bcvboxsync } DWords;
533ffcb943c4af2c5fe6385d816d0ba3eda9383bvboxsync /** Word view. */
533ffcb943c4af2c5fe6385d816d0ba3eda9383bvboxsync struct
533ffcb943c4af2c5fe6385d816d0ba3eda9383bvboxsync {
533ffcb943c4af2c5fe6385d816d0ba3eda9383bvboxsync#ifdef RT_BIG_ENDIAN
533ffcb943c4af2c5fe6385d816d0ba3eda9383bvboxsync uint16_t w3;
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync uint16_t w2;
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync uint16_t w1;
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync uint16_t w0;
9984bae4ef25be8afd95d184308adcfef6e2ec0dvboxsync#else
e52f819639386db020b2a635b47a415248c7fbf9vboxsync uint16_t w0;
b978e5849454446957177fd47ee98609ab0457a6vboxsync uint16_t w1;
2634ec5cbf8f1fa0a968cd4664ead6df1fed730dvboxsync uint16_t w2;
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync uint16_t w3;
b74ca013e5f201a2dd371e6c438433ceac12af30vboxsync#endif
22e281e75ed636601178296c6daebda8f1d17c59vboxsync } Words;
b74ca013e5f201a2dd371e6c438433ceac12af30vboxsync
b74ca013e5f201a2dd371e6c438433ceac12af30vboxsync /** 64-bit view. */
b40179b44fea65b72b2f226f62af1ed7bd3c48fcvboxsync uint64_t au64[1];
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync /** 32-bit view. */
2634ec5cbf8f1fa0a968cd4664ead6df1fed730dvboxsync uint32_t au32[2];
b40179b44fea65b72b2f226f62af1ed7bd3c48fcvboxsync /** 16-bit view. */
82e90599291da476b2de7c8db33cfb0f2cbac774vboxsync uint16_t au16[4];
2634ec5cbf8f1fa0a968cd4664ead6df1fed730dvboxsync /** 8-bit view. */
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync uint8_t au8[8];
0e77737b0ba913683e614db11463b31ca67aacbevboxsync} RTUINT64U;
0e77737b0ba913683e614db11463b31ca67aacbevboxsync/** Pointer to a 64-bit unsigned integer union. */
9e4166cf5ed4940f506bc718ea6c89bf7ed252c8vboxsynctypedef RTUINT64U *PRTUINT64U;
9e4166cf5ed4940f506bc718ea6c89bf7ed252c8vboxsync/** Pointer to a const 64-bit unsigned integer union. */
0e77737b0ba913683e614db11463b31ca67aacbevboxsynctypedef const RTUINT64U *PCRTUINT64U;
e08de24d4792d31b7f2aac29db5cb8840d940009vboxsync
22e281e75ed636601178296c6daebda8f1d17c59vboxsync
e9a217d585085a6a6d129d27ca0d96a1b8e6d0eevboxsync/**
2634ec5cbf8f1fa0a968cd4664ead6df1fed730dvboxsync * 128-bit unsigned integer union.
2d53f6e472561965d363674e17f48d3bdffc24d3vboxsync */
b74ca013e5f201a2dd371e6c438433ceac12af30vboxsynctypedef union RTUINT128U
b74ca013e5f201a2dd371e6c438433ceac12af30vboxsync{
22e281e75ed636601178296c6daebda8f1d17c59vboxsync /** Natural view.
b74ca013e5f201a2dd371e6c438433ceac12af30vboxsync * WARNING! This member depends on the compiler supporting 128-bit stuff. */
22e281e75ed636601178296c6daebda8f1d17c59vboxsync uint128_t u;
b74ca013e5f201a2dd371e6c438433ceac12af30vboxsync /** Hi/Low view. */
b74ca013e5f201a2dd371e6c438433ceac12af30vboxsync struct
b40179b44fea65b72b2f226f62af1ed7bd3c48fcvboxsync {
2d53f6e472561965d363674e17f48d3bdffc24d3vboxsync#ifdef RT_BIG_ENDIAN
2634ec5cbf8f1fa0a968cd4664ead6df1fed730dvboxsync uint64_t Hi;
b40179b44fea65b72b2f226f62af1ed7bd3c48fcvboxsync uint64_t Lo;
82e90599291da476b2de7c8db33cfb0f2cbac774vboxsync#else
2634ec5cbf8f1fa0a968cd4664ead6df1fed730dvboxsync uint64_t Lo;
2d53f6e472561965d363674e17f48d3bdffc24d3vboxsync uint64_t Hi;
0e77737b0ba913683e614db11463b31ca67aacbevboxsync#endif
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync } s;
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync /** Quad-Word view. */
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync struct
3080f6c0871099df43a4e91b31894d9c2b1369a8vboxsync {
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync#ifdef RT_BIG_ENDIAN
9984bae4ef25be8afd95d184308adcfef6e2ec0dvboxsync uint64_t qw1;
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync uint64_t qw0;
8e972b677df5ee27b99211fc7e456a5aa50f3e68vboxsync#else
8e972b677df5ee27b99211fc7e456a5aa50f3e68vboxsync uint64_t qw0;
b978e5849454446957177fd47ee98609ab0457a6vboxsync uint64_t qw1;
13ba5527caaa9b8c4fee29f22e374fa67c4c6f72vboxsync#endif
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync } QWords;
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync /** Double-Word view. */
1999ae03c34840fa4d712fd2e020120b2cb7182avboxsync struct
e0b9d3c357adf9b7d05f55540e86f22943fc4b23vboxsync {
1986f56777969a25707ab214f8dd070804be666cvboxsync#ifdef RT_BIG_ENDIAN
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync uint32_t dw3;
806d0b554daa555364af5f87bc96eccbe760db7avboxsync uint32_t dw2;
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync uint32_t dw1;
13ba5527caaa9b8c4fee29f22e374fa67c4c6f72vboxsync uint32_t dw0;
13ba5527caaa9b8c4fee29f22e374fa67c4c6f72vboxsync#else
806d0b554daa555364af5f87bc96eccbe760db7avboxsync uint32_t dw0;
13ba5527caaa9b8c4fee29f22e374fa67c4c6f72vboxsync uint32_t dw1;
806d0b554daa555364af5f87bc96eccbe760db7avboxsync uint32_t dw2;
806d0b554daa555364af5f87bc96eccbe760db7avboxsync uint32_t dw3;
806d0b554daa555364af5f87bc96eccbe760db7avboxsync#endif
806d0b554daa555364af5f87bc96eccbe760db7avboxsync } DWords;
22e281e75ed636601178296c6daebda8f1d17c59vboxsync /** Word view. */
34e34d3656484dde89a9c7b57fcbf7048d2fdb13vboxsync struct
806d0b554daa555364af5f87bc96eccbe760db7avboxsync {
806d0b554daa555364af5f87bc96eccbe760db7avboxsync#ifdef RT_BIG_ENDIAN
4b8fcf8e4d11536879a1f6e66279ba0c363a7eaevboxsync uint16_t w7;
806d0b554daa555364af5f87bc96eccbe760db7avboxsync uint16_t w6;
806d0b554daa555364af5f87bc96eccbe760db7avboxsync uint16_t w5;
d98e61ba075ed7d0b567a5d884bc85d643fe3de7vboxsync uint16_t w4;
9e4166cf5ed4940f506bc718ea6c89bf7ed252c8vboxsync uint16_t w3;
9e4166cf5ed4940f506bc718ea6c89bf7ed252c8vboxsync uint16_t w2;
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync uint16_t w1;
e08de24d4792d31b7f2aac29db5cb8840d940009vboxsync uint16_t w0;
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync#else
806d0b554daa555364af5f87bc96eccbe760db7avboxsync uint16_t w0;
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync uint16_t w1;
2afbe132eb7931e0125141eabe3a48e08f1ffab5vboxsync uint16_t w2;
806d0b554daa555364af5f87bc96eccbe760db7avboxsync uint16_t w3;
806d0b554daa555364af5f87bc96eccbe760db7avboxsync uint16_t w4;
1999ae03c34840fa4d712fd2e020120b2cb7182avboxsync uint16_t w5;
1986f56777969a25707ab214f8dd070804be666cvboxsync uint16_t w6;
e0b9d3c357adf9b7d05f55540e86f22943fc4b23vboxsync uint16_t w7;
806d0b554daa555364af5f87bc96eccbe760db7avboxsync#endif
e149c362e69e5f0bbd82da11fd8163b2d29c3a72vboxsync } Words;
806d0b554daa555364af5f87bc96eccbe760db7avboxsync
13ba5527caaa9b8c4fee29f22e374fa67c4c6f72vboxsync /** 64-bit view. */
2afbe132eb7931e0125141eabe3a48e08f1ffab5vboxsync uint64_t au64[2];
806d0b554daa555364af5f87bc96eccbe760db7avboxsync /** 32-bit view. */
2afbe132eb7931e0125141eabe3a48e08f1ffab5vboxsync uint32_t au32[4];
2afbe132eb7931e0125141eabe3a48e08f1ffab5vboxsync /** 16-bit view. */
2afbe132eb7931e0125141eabe3a48e08f1ffab5vboxsync uint16_t au16[8];
2afbe132eb7931e0125141eabe3a48e08f1ffab5vboxsync /** 8-bit view. */
2afbe132eb7931e0125141eabe3a48e08f1ffab5vboxsync uint8_t au8[16];
2afbe132eb7931e0125141eabe3a48e08f1ffab5vboxsync} RTUINT128U;
806d0b554daa555364af5f87bc96eccbe760db7avboxsync/** Pointer to a 64-bit unsigned integer union. */
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsynctypedef RTUINT128U *PRTUINT128U;
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync/** Pointer to a const 64-bit unsigned integer union. */
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsynctypedef const RTUINT128U *PCRTUINT128U;
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync
e0b9d3c357adf9b7d05f55540e86f22943fc4b23vboxsync
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync/** Generic function type.
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync * @see PFNRT
7e960d3a0a8a3a84d7aba2cca45d72b1c31cc97bvboxsync */
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsynctypedef DECLCALLBACK(void) FNRT(void);
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync
22e281e75ed636601178296c6daebda8f1d17c59vboxsync/** Generic function pointer.
4b8fcf8e4d11536879a1f6e66279ba0c363a7eaevboxsync * With -pedantic, gcc-4 complains when casting a function to a data object, for
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync * example:
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync *
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync * @code
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync * void foo(void)
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync * {
79b24ef0ab7cd4a03a3571b3954c52ab8b573137vboxsync * }
79b24ef0ab7cd4a03a3571b3954c52ab8b573137vboxsync *
9984bae4ef25be8afd95d184308adcfef6e2ec0dvboxsync * void *bar = (void *)foo;
3dde2f85d4cf477621a3128887a2c08a8bca7c01vboxsync * @endcode
b978e5849454446957177fd47ee98609ab0457a6vboxsync *
13ba5527caaa9b8c4fee29f22e374fa67c4c6f72vboxsync * The compiler would warn with "ISO C++ forbids casting between
79b24ef0ab7cd4a03a3571b3954c52ab8b573137vboxsync * pointer-to-function and pointer-to-object". The purpose of this warning is
79b24ef0ab7cd4a03a3571b3954c52ab8b573137vboxsync * not to bother the programmer but to point out that he is probably doing
1999ae03c34840fa4d712fd2e020120b2cb7182avboxsync * something dangerous, assigning a pointer to executable code to a data object.
e0b9d3c357adf9b7d05f55540e86f22943fc4b23vboxsync */
1986f56777969a25707ab214f8dd070804be666cvboxsynctypedef FNRT *PFNRT;
79b24ef0ab7cd4a03a3571b3954c52ab8b573137vboxsync
806d0b554daa555364af5f87bc96eccbe760db7avboxsync/** Millisecond interval. */
79b24ef0ab7cd4a03a3571b3954c52ab8b573137vboxsynctypedef uint32_t RTMSINTERVAL;
13ba5527caaa9b8c4fee29f22e374fa67c4c6f72vboxsync/** Pointer to a millisecond interval. */
3cac8f8c6923a3a89ecfccda5e89ad75f48658e0vboxsynctypedef RTMSINTERVAL *PRTMSINTERVAL;
3cac8f8c6923a3a89ecfccda5e89ad75f48658e0vboxsync/** Pointer to a const millisecond interval. */
3cac8f8c6923a3a89ecfccda5e89ad75f48658e0vboxsynctypedef const RTMSINTERVAL *PCRTMSINTERVAL;
3cac8f8c6923a3a89ecfccda5e89ad75f48658e0vboxsync
03319aeaef07ef63a404237f2cb56199131f4a03vboxsync
1157941288c9533575a655c660af55d13da31eefvboxsync/** @defgroup grp_rt_types_both Common Guest and Host Context Basic Types
5e797edc29f96c8367de4fbf5874171c24a89ba7vboxsync * @ingroup grp_rt_types
1157941288c9533575a655c660af55d13da31eefvboxsync * @{
3dde2f85d4cf477621a3128887a2c08a8bca7c01vboxsync */
5e797edc29f96c8367de4fbf5874171c24a89ba7vboxsync
5e797edc29f96c8367de4fbf5874171c24a89ba7vboxsync/** Signed integer which can contain both GC and HC pointers. */
5e797edc29f96c8367de4fbf5874171c24a89ba7vboxsync#if (HC_ARCH_BITS == 32 && GC_ARCH_BITS == 32)
22e281e75ed636601178296c6daebda8f1d17c59vboxsynctypedef int32_t RTINTPTR;
34e34d3656484dde89a9c7b57fcbf7048d2fdb13vboxsync#elif (HC_ARCH_BITS == 64 || GC_ARCH_BITS == 64)
7bae75e0b207aa4d4cad2a951271ad1a0e8ab9fdvboxsynctypedef int64_t RTINTPTR;
7bae75e0b207aa4d4cad2a951271ad1a0e8ab9fdvboxsync#else
4b8fcf8e4d11536879a1f6e66279ba0c363a7eaevboxsync# error Unsupported HC_ARCH_BITS and/or GC_ARCH_BITS values.
5e797edc29f96c8367de4fbf5874171c24a89ba7vboxsync#endif
3dde2f85d4cf477621a3128887a2c08a8bca7c01vboxsync/** Pointer to signed integer which can contain both GC and HC pointers. */
79b24ef0ab7cd4a03a3571b3954c52ab8b573137vboxsynctypedef RTINTPTR *PRTINTPTR;
9e4166cf5ed4940f506bc718ea6c89bf7ed252c8vboxsync/** Pointer const to signed integer which can contain both GC and HC pointers. */
9e4166cf5ed4940f506bc718ea6c89bf7ed252c8vboxsynctypedef const RTINTPTR *PCRTINTPTR;
79b24ef0ab7cd4a03a3571b3954c52ab8b573137vboxsync/** The maximum value the RTINTPTR type can hold. */
e08de24d4792d31b7f2aac29db5cb8840d940009vboxsync#if (HC_ARCH_BITS == 32 && GC_ARCH_BITS == 32)
22e281e75ed636601178296c6daebda8f1d17c59vboxsync# define RTINTPTR_MAX INT32_MAX
5e797edc29f96c8367de4fbf5874171c24a89ba7vboxsync#elif (HC_ARCH_BITS == 64 || GC_ARCH_BITS == 64)
13ba5527caaa9b8c4fee29f22e374fa67c4c6f72vboxsync# define RTINTPTR_MAX INT64_MAX
79b24ef0ab7cd4a03a3571b3954c52ab8b573137vboxsync#else
79b24ef0ab7cd4a03a3571b3954c52ab8b573137vboxsync# error Unsupported HC_ARCH_BITS and/or GC_ARCH_BITS values.
79b24ef0ab7cd4a03a3571b3954c52ab8b573137vboxsync#endif
1999ae03c34840fa4d712fd2e020120b2cb7182avboxsync/** The minimum value the RTINTPTR type can hold. */
e0b9d3c357adf9b7d05f55540e86f22943fc4b23vboxsync#if (HC_ARCH_BITS == 32 && GC_ARCH_BITS == 32)
1986f56777969a25707ab214f8dd070804be666cvboxsync# define RTINTPTR_MIN INT32_MIN
79b24ef0ab7cd4a03a3571b3954c52ab8b573137vboxsync#elif (HC_ARCH_BITS == 64 || GC_ARCH_BITS == 64)
e149c362e69e5f0bbd82da11fd8163b2d29c3a72vboxsync# define RTINTPTR_MIN INT64_MIN
79b24ef0ab7cd4a03a3571b3954c52ab8b573137vboxsync#else
13ba5527caaa9b8c4fee29f22e374fa67c4c6f72vboxsync# error Unsupported HC_ARCH_BITS and/or GC_ARCH_BITS values.
13ba5527caaa9b8c4fee29f22e374fa67c4c6f72vboxsync#endif
57399ab65e2825c324fb9dcb4642d4ae2c232509vboxsync
13ba5527caaa9b8c4fee29f22e374fa67c4c6f72vboxsync/** Unsigned integer which can contain both GC and HC pointers. */
13ba5527caaa9b8c4fee29f22e374fa67c4c6f72vboxsync#if (HC_ARCH_BITS == 32 && GC_ARCH_BITS == 32)
3dde2f85d4cf477621a3128887a2c08a8bca7c01vboxsynctypedef uint32_t RTUINTPTR;
3dde2f85d4cf477621a3128887a2c08a8bca7c01vboxsync#elif (HC_ARCH_BITS == 64 || GC_ARCH_BITS == 64)
22e281e75ed636601178296c6daebda8f1d17c59vboxsynctypedef uint64_t RTUINTPTR;
34e34d3656484dde89a9c7b57fcbf7048d2fdb13vboxsync#else
7bae75e0b207aa4d4cad2a951271ad1a0e8ab9fdvboxsync# error Unsupported HC_ARCH_BITS and/or GC_ARCH_BITS values.
7bae75e0b207aa4d4cad2a951271ad1a0e8ab9fdvboxsync#endif
4b8fcf8e4d11536879a1f6e66279ba0c363a7eaevboxsync/** Pointer to unsigned integer which can contain both GC and HC pointers. */
3dde2f85d4cf477621a3128887a2c08a8bca7c01vboxsynctypedef RTUINTPTR *PRTUINTPTR;
79b24ef0ab7cd4a03a3571b3954c52ab8b573137vboxsync/** Pointer const to unsigned integer which can contain both GC and HC pointers. */
79b24ef0ab7cd4a03a3571b3954c52ab8b573137vboxsynctypedef const RTUINTPTR *PCRTUINTPTR;
79b24ef0ab7cd4a03a3571b3954c52ab8b573137vboxsync/** The maximum value the RTUINTPTR type can hold. */
79b24ef0ab7cd4a03a3571b3954c52ab8b573137vboxsync#if (HC_ARCH_BITS == 32 && GC_ARCH_BITS == 32)
3080f6c0871099df43a4e91b31894d9c2b1369a8vboxsync# define RTUINTPTR_MAX UINT32_MAX
f9147fe1eaa4e35287f8f39282c7f92f0d7de0b7vboxsync#elif (HC_ARCH_BITS == 64 || GC_ARCH_BITS == 64)
b978e5849454446957177fd47ee98609ab0457a6vboxsync# define RTUINTPTR_MAX UINT64_MAX
3cac8f8c6923a3a89ecfccda5e89ad75f48658e0vboxsync#else
3cac8f8c6923a3a89ecfccda5e89ad75f48658e0vboxsync# error Unsupported HC_ARCH_BITS and/or GC_ARCH_BITS values.
7082d29724f6c3788977a51591b0379fd3acbf72vboxsync#endif
7082d29724f6c3788977a51591b0379fd3acbf72vboxsync
7082d29724f6c3788977a51591b0379fd3acbf72vboxsync/** Signed integer. */
6f0193f5a9287559d34a75f438c2682d8fb08038vboxsynctypedef int32_t RTINT;
6f0193f5a9287559d34a75f438c2682d8fb08038vboxsync/** Pointer to signed integer. */
46b1ac1c3302722f93e787d0f0693965e88f5ceevboxsynctypedef RTINT *PRTINT;
9984bae4ef25be8afd95d184308adcfef6e2ec0dvboxsync/** Pointer to const signed integer. */
6f0193f5a9287559d34a75f438c2682d8fb08038vboxsynctypedef const RTINT *PCRTINT;
e4ea543752422f1139923e3e506c625b0a1827c5vboxsync
f9147fe1eaa4e35287f8f39282c7f92f0d7de0b7vboxsync/** Unsigned integer. */
13ba5527caaa9b8c4fee29f22e374fa67c4c6f72vboxsynctypedef uint32_t RTUINT;
f827fea1108b8f8a1a5f63318f6ec3cf4a9e7010vboxsync/** Pointer to unsigned integer. */
f9147fe1eaa4e35287f8f39282c7f92f0d7de0b7vboxsynctypedef RTUINT *PRTUINT;
1999ae03c34840fa4d712fd2e020120b2cb7182avboxsync/** Pointer to const unsigned integer. */
1986f56777969a25707ab214f8dd070804be666cvboxsynctypedef const RTUINT *PCRTUINT;
e0b9d3c357adf9b7d05f55540e86f22943fc4b23vboxsync
5cf54b3ffeb7ee90685dcaec329ef71a729f5947vboxsync/** A file offset / size (off_t). */
806d0b554daa555364af5f87bc96eccbe760db7avboxsynctypedef int64_t RTFOFF;
f9147fe1eaa4e35287f8f39282c7f92f0d7de0b7vboxsync/** Pointer to a file offset / size. */
13ba5527caaa9b8c4fee29f22e374fa67c4c6f72vboxsynctypedef RTFOFF *PRTFOFF;
13ba5527caaa9b8c4fee29f22e374fa67c4c6f72vboxsync/** The max value for RTFOFF. */
6f0193f5a9287559d34a75f438c2682d8fb08038vboxsync#define RTFOFF_MAX INT64_MAX
13ba5527caaa9b8c4fee29f22e374fa67c4c6f72vboxsync/** The min value for RTFOFF. */
6f0193f5a9287559d34a75f438c2682d8fb08038vboxsync#define RTFOFF_MIN INT64_MIN
6f0193f5a9287559d34a75f438c2682d8fb08038vboxsync
6f0193f5a9287559d34a75f438c2682d8fb08038vboxsync/** File mode (see iprt/fs.h). */
22e281e75ed636601178296c6daebda8f1d17c59vboxsynctypedef uint32_t RTFMODE;
9f9a20823b87e89c1b5cb45eb9b5699b29bfefebvboxsync/** Pointer to file mode. */
6f0193f5a9287559d34a75f438c2682d8fb08038vboxsynctypedef RTFMODE *PRTFMODE;
6f0193f5a9287559d34a75f438c2682d8fb08038vboxsync
4b8fcf8e4d11536879a1f6e66279ba0c363a7eaevboxsync/** Device unix number. */
6f0193f5a9287559d34a75f438c2682d8fb08038vboxsynctypedef uint32_t RTDEV;
6f0193f5a9287559d34a75f438c2682d8fb08038vboxsync/** Pointer to a device unix number. */
f9147fe1eaa4e35287f8f39282c7f92f0d7de0b7vboxsynctypedef RTDEV *PRTDEV;
9e4166cf5ed4940f506bc718ea6c89bf7ed252c8vboxsync
9e4166cf5ed4940f506bc718ea6c89bf7ed252c8vboxsync/** @name RTDEV Macros
f9147fe1eaa4e35287f8f39282c7f92f0d7de0b7vboxsync * @{ */
6f0193f5a9287559d34a75f438c2682d8fb08038vboxsync/**
f9147fe1eaa4e35287f8f39282c7f92f0d7de0b7vboxsync * Our makedev macro.
6f0193f5a9287559d34a75f438c2682d8fb08038vboxsync * @returns RTDEV
f9147fe1eaa4e35287f8f39282c7f92f0d7de0b7vboxsync * @param uMajor The major device number.
13ba5527caaa9b8c4fee29f22e374fa67c4c6f72vboxsync * @param uMinor The minor device number.
6f0193f5a9287559d34a75f438c2682d8fb08038vboxsync */
6f0193f5a9287559d34a75f438c2682d8fb08038vboxsync#define RTDEV_MAKE(uMajor, uMinor) ((RTDEV)( ((RTDEV)(uMajor) << 24) | (uMinor & UINT32_C(0x00ffffff)) ))
1999ae03c34840fa4d712fd2e020120b2cb7182avboxsync/**
1986f56777969a25707ab214f8dd070804be666cvboxsync * Get the major device node number from an RTDEV type.
e0b9d3c357adf9b7d05f55540e86f22943fc4b23vboxsync * @returns The major device number of @a uDev
6f0193f5a9287559d34a75f438c2682d8fb08038vboxsync * @param uDev The device number.
e149c362e69e5f0bbd82da11fd8163b2d29c3a72vboxsync */
6f0193f5a9287559d34a75f438c2682d8fb08038vboxsync#define RTDEV_MAJOR(uDev) ((uDev) >> 24)
13ba5527caaa9b8c4fee29f22e374fa67c4c6f72vboxsync/**
13ba5527caaa9b8c4fee29f22e374fa67c4c6f72vboxsync * Get the minor device node number from an RTDEV type.
6f0193f5a9287559d34a75f438c2682d8fb08038vboxsync * @returns The minor device number of @a uDev
13ba5527caaa9b8c4fee29f22e374fa67c4c6f72vboxsync * @param uDev The device number.
6f0193f5a9287559d34a75f438c2682d8fb08038vboxsync */
6f0193f5a9287559d34a75f438c2682d8fb08038vboxsync#define RTDEV_MINOR(uDev) ((uDev) & UINT32_C(0x00ffffff))
6f0193f5a9287559d34a75f438c2682d8fb08038vboxsync/** @} */
22e281e75ed636601178296c6daebda8f1d17c59vboxsync
9f9a20823b87e89c1b5cb45eb9b5699b29bfefebvboxsync/** i-node number. */
6f0193f5a9287559d34a75f438c2682d8fb08038vboxsynctypedef uint64_t RTINODE;
6f0193f5a9287559d34a75f438c2682d8fb08038vboxsync/** Pointer to a i-node number. */
4b8fcf8e4d11536879a1f6e66279ba0c363a7eaevboxsynctypedef RTINODE *PRTINODE;
6f0193f5a9287559d34a75f438c2682d8fb08038vboxsync
f9147fe1eaa4e35287f8f39282c7f92f0d7de0b7vboxsync/** User id. */
f9147fe1eaa4e35287f8f39282c7f92f0d7de0b7vboxsynctypedef uint32_t RTUID;
f9147fe1eaa4e35287f8f39282c7f92f0d7de0b7vboxsync/** Pointer to a user id. */
f9147fe1eaa4e35287f8f39282c7f92f0d7de0b7vboxsynctypedef RTUID *PRTUID;
f9147fe1eaa4e35287f8f39282c7f92f0d7de0b7vboxsync/** NIL user id.
f9147fe1eaa4e35287f8f39282c7f92f0d7de0b7vboxsync * @todo check this for portability! */
7e960d3a0a8a3a84d7aba2cca45d72b1c31cc97bvboxsync#define NIL_RTUID (~(RTUID)0)
65b61798a61dd4c32cce448db1dac70bba8d5cf5vboxsync
65b61798a61dd4c32cce448db1dac70bba8d5cf5vboxsync/** Group id. */
b978e5849454446957177fd47ee98609ab0457a6vboxsynctypedef uint32_t RTGID;
9984bae4ef25be8afd95d184308adcfef6e2ec0dvboxsync/** Pointer to a group id. */
65b61798a61dd4c32cce448db1dac70bba8d5cf5vboxsynctypedef RTGID *PRTGID;
13ba5527caaa9b8c4fee29f22e374fa67c4c6f72vboxsync/** NIL group id.
13ba5527caaa9b8c4fee29f22e374fa67c4c6f72vboxsync * @todo check this for portability! */
65b61798a61dd4c32cce448db1dac70bba8d5cf5vboxsync#define NIL_RTGID (~(RTGID)0)
13ba5527caaa9b8c4fee29f22e374fa67c4c6f72vboxsync
22e281e75ed636601178296c6daebda8f1d17c59vboxsync/** I/O Port. */
34e34d3656484dde89a9c7b57fcbf7048d2fdb13vboxsynctypedef uint16_t RTIOPORT;
13ba5527caaa9b8c4fee29f22e374fa67c4c6f72vboxsync/** Pointer to I/O Port. */
13ba5527caaa9b8c4fee29f22e374fa67c4c6f72vboxsynctypedef RTIOPORT *PRTIOPORT;
4b8fcf8e4d11536879a1f6e66279ba0c363a7eaevboxsync/** Pointer to const I/O Port. */
65b61798a61dd4c32cce448db1dac70bba8d5cf5vboxsynctypedef const RTIOPORT *PCRTIOPORT;
65b61798a61dd4c32cce448db1dac70bba8d5cf5vboxsync
9e4166cf5ed4940f506bc718ea6c89bf7ed252c8vboxsync/** Selector. */
9e4166cf5ed4940f506bc718ea6c89bf7ed252c8vboxsynctypedef uint16_t RTSEL;
65b61798a61dd4c32cce448db1dac70bba8d5cf5vboxsync/** Pointer to selector. */
e08de24d4792d31b7f2aac29db5cb8840d940009vboxsynctypedef RTSEL *PRTSEL;
22e281e75ed636601178296c6daebda8f1d17c59vboxsync/** Pointer to const selector. */
65b61798a61dd4c32cce448db1dac70bba8d5cf5vboxsynctypedef const RTSEL *PCRTSEL;
13ba5527caaa9b8c4fee29f22e374fa67c4c6f72vboxsync/** Max selector value. */
65b61798a61dd4c32cce448db1dac70bba8d5cf5vboxsync#define RTSEL_MAX UINT16_MAX
65b61798a61dd4c32cce448db1dac70bba8d5cf5vboxsync
65b61798a61dd4c32cce448db1dac70bba8d5cf5vboxsync/** Far 16-bit pointer. */
22e281e75ed636601178296c6daebda8f1d17c59vboxsync#pragma pack(1)
34e34d3656484dde89a9c7b57fcbf7048d2fdb13vboxsynctypedef struct RTFAR16
8e8844a522f5d335f177a0313b03067d79cce201vboxsync{
65b61798a61dd4c32cce448db1dac70bba8d5cf5vboxsync uint16_t off;
4b8fcf8e4d11536879a1f6e66279ba0c363a7eaevboxsync RTSEL sel;
65b61798a61dd4c32cce448db1dac70bba8d5cf5vboxsync} RTFAR16;
65b61798a61dd4c32cce448db1dac70bba8d5cf5vboxsync#pragma pack()
65b61798a61dd4c32cce448db1dac70bba8d5cf5vboxsync/** Pointer to Far 16-bit pointer. */
65b61798a61dd4c32cce448db1dac70bba8d5cf5vboxsynctypedef RTFAR16 *PRTFAR16;
65b61798a61dd4c32cce448db1dac70bba8d5cf5vboxsync/** Pointer to const Far 16-bit pointer. */
46df4404c8dbbf3672e7aae8cd0b2770356e5b73vboxsynctypedef const RTFAR16 *PCRTFAR16;
46df4404c8dbbf3672e7aae8cd0b2770356e5b73vboxsync
b978e5849454446957177fd47ee98609ab0457a6vboxsync/** Far 32-bit pointer. */
3cac8f8c6923a3a89ecfccda5e89ad75f48658e0vboxsync#pragma pack(1)
3cac8f8c6923a3a89ecfccda5e89ad75f48658e0vboxsynctypedef struct RTFAR32
46df4404c8dbbf3672e7aae8cd0b2770356e5b73vboxsync{
46df4404c8dbbf3672e7aae8cd0b2770356e5b73vboxsync uint32_t off;
9984bae4ef25be8afd95d184308adcfef6e2ec0dvboxsync RTSEL sel;
ce2d2eef2525963979102e63c2419d1c69d767ccvboxsync} RTFAR32;
ce2d2eef2525963979102e63c2419d1c69d767ccvboxsync#pragma pack()
46df4404c8dbbf3672e7aae8cd0b2770356e5b73vboxsync/** Pointer to Far 32-bit pointer. */
ce2d2eef2525963979102e63c2419d1c69d767ccvboxsynctypedef RTFAR32 *PRTFAR32;
9f9a20823b87e89c1b5cb45eb9b5699b29bfefebvboxsync/** Pointer to const Far 32-bit pointer. */
4b8fcf8e4d11536879a1f6e66279ba0c363a7eaevboxsynctypedef const RTFAR32 *PCRTFAR32;
ce2d2eef2525963979102e63c2419d1c69d767ccvboxsync
ce2d2eef2525963979102e63c2419d1c69d767ccvboxsync/** Far 64-bit pointer. */
9e4166cf5ed4940f506bc718ea6c89bf7ed252c8vboxsync#pragma pack(1)
9e4166cf5ed4940f506bc718ea6c89bf7ed252c8vboxsynctypedef struct RTFAR64
ce2d2eef2525963979102e63c2419d1c69d767ccvboxsync{
ce2d2eef2525963979102e63c2419d1c69d767ccvboxsync uint64_t off;
ce2d2eef2525963979102e63c2419d1c69d767ccvboxsync RTSEL sel;
3dde2f85d4cf477621a3128887a2c08a8bca7c01vboxsync} RTFAR64;
ce2d2eef2525963979102e63c2419d1c69d767ccvboxsync#pragma pack()
9f9a20823b87e89c1b5cb45eb9b5699b29bfefebvboxsync/** Pointer to Far 64-bit pointer. */
4b8fcf8e4d11536879a1f6e66279ba0c363a7eaevboxsynctypedef RTFAR64 *PRTFAR64;
3dde2f85d4cf477621a3128887a2c08a8bca7c01vboxsync/** Pointer to const Far 64-bit pointer. */
46df4404c8dbbf3672e7aae8cd0b2770356e5b73vboxsynctypedef const RTFAR64 *PCRTFAR64;
46df4404c8dbbf3672e7aae8cd0b2770356e5b73vboxsync
46df4404c8dbbf3672e7aae8cd0b2770356e5b73vboxsync/** @} */
46df4404c8dbbf3672e7aae8cd0b2770356e5b73vboxsync
5db1d52ffbcaa46c3d944c6c2d9c552306817d9avboxsync
585f64d6f624f9e683321dabeb21b0eb2e6aa473vboxsync/** @defgroup grp_rt_types_hc Host Context Basic Types
b978e5849454446957177fd47ee98609ab0457a6vboxsync * @ingroup grp_rt_types
3cac8f8c6923a3a89ecfccda5e89ad75f48658e0vboxsync * @{
3cac8f8c6923a3a89ecfccda5e89ad75f48658e0vboxsync */
585f64d6f624f9e683321dabeb21b0eb2e6aa473vboxsync
585f64d6f624f9e683321dabeb21b0eb2e6aa473vboxsync/** HC Natural signed integer.
9984bae4ef25be8afd95d184308adcfef6e2ec0dvboxsync * @deprecated silly type. */
ce2d2eef2525963979102e63c2419d1c69d767ccvboxsynctypedef int32_t RTHCINT;
ce2d2eef2525963979102e63c2419d1c69d767ccvboxsync/** Pointer to HC Natural signed integer.
585f64d6f624f9e683321dabeb21b0eb2e6aa473vboxsync * @deprecated silly type. */
ce2d2eef2525963979102e63c2419d1c69d767ccvboxsynctypedef RTHCINT *PRTHCINT;
9673b0b804d0b0f801f377c6371600e92071241fvboxsync/** Pointer to const HC Natural signed integer.
4b8fcf8e4d11536879a1f6e66279ba0c363a7eaevboxsync * @deprecated silly type. */
ce2d2eef2525963979102e63c2419d1c69d767ccvboxsynctypedef const RTHCINT *PCRTHCINT;
ce2d2eef2525963979102e63c2419d1c69d767ccvboxsync
9e4166cf5ed4940f506bc718ea6c89bf7ed252c8vboxsync/** HC Natural unsigned integer.
9e4166cf5ed4940f506bc718ea6c89bf7ed252c8vboxsync * @deprecated silly type. */
ce2d2eef2525963979102e63c2419d1c69d767ccvboxsynctypedef uint32_t RTHCUINT;
ce2d2eef2525963979102e63c2419d1c69d767ccvboxsync/** Pointer to HC Natural unsigned integer.
ce2d2eef2525963979102e63c2419d1c69d767ccvboxsync * @deprecated silly type. */
585f64d6f624f9e683321dabeb21b0eb2e6aa473vboxsynctypedef RTHCUINT *PRTHCUINT;
ce2d2eef2525963979102e63c2419d1c69d767ccvboxsync/** Pointer to const HC Natural unsigned integer.
9673b0b804d0b0f801f377c6371600e92071241fvboxsync * @deprecated silly type. */
4b8fcf8e4d11536879a1f6e66279ba0c363a7eaevboxsynctypedef const RTHCUINT *PCRTHCUINT;
585f64d6f624f9e683321dabeb21b0eb2e6aa473vboxsync
585f64d6f624f9e683321dabeb21b0eb2e6aa473vboxsync
585f64d6f624f9e683321dabeb21b0eb2e6aa473vboxsync/** Signed integer which can contain a HC pointer. */
585f64d6f624f9e683321dabeb21b0eb2e6aa473vboxsync#if HC_ARCH_BITS == 32
65b61798a61dd4c32cce448db1dac70bba8d5cf5vboxsynctypedef int32_t RTHCINTPTR;
585f64d6f624f9e683321dabeb21b0eb2e6aa473vboxsync#elif HC_ARCH_BITS == 64
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsynctypedef int64_t RTHCINTPTR;
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync#else
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync# error Unsupported HC_ARCH_BITS value.
9984bae4ef25be8afd95d184308adcfef6e2ec0dvboxsync#endif
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync/** Pointer to signed integer which can contain a HC pointer. */
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsynctypedef RTHCINTPTR *PRTHCINTPTR;
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync/** Pointer to const signed integer which can contain a HC pointer. */
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsynctypedef const RTHCINTPTR *PCRTHCINTPTR;
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync/** Max RTHCINTPTR value. */
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync#if HC_ARCH_BITS == 32
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync# define RTHCINTPTR_MAX INT32_MAX
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync#else
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync# define RTHCINTPTR_MAX INT64_MAX
541071eef3db0e3e0e5497bb4b692efee42b1ad0vboxsync#endif
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync/** Min RTHCINTPTR value. */
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync#if HC_ARCH_BITS == 32
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync# define RTHCINTPTR_MIN INT32_MIN
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync#else
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync# define RTHCINTPTR_MIN INT64_MIN
ad27e1d5e48ca41245120c331cc88b50464813cevboxsync#endif
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync
3cbb4f9a6a320e58ed398ef7aaa004cc8727abc5vboxsync/** Signed integer which can contain a HC ring-3 pointer. */
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync#if R3_ARCH_BITS == 32
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsynctypedef int32_t RTR3INTPTR;
3cbb4f9a6a320e58ed398ef7aaa004cc8727abc5vboxsync#elif R3_ARCH_BITS == 64
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsynctypedef int64_t RTR3INTPTR;
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync#else
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync# error Unsupported R3_ARCH_BITS value.
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync#endif
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync/** Pointer to signed integer which can contain a HC ring-3 pointer. */
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsynctypedef RTR3INTPTR *PRTR3INTPTR;
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync/** Pointer to const signed integer which can contain a HC ring-3 pointer. */
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsynctypedef const RTR3INTPTR *PCRTR3INTPTR;
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync/** Max RTR3INTPTR value. */
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync#if R3_ARCH_BITS == 32
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync# define RTR3INTPTR_MAX INT32_MAX
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync#else
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync# define RTR3INTPTR_MAX INT64_MAX
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync#endif
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync/** Min RTR3INTPTR value. */
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync#if R3_ARCH_BITS == 32
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync# define RTR3INTPTR_MIN INT32_MIN
3cbb4f9a6a320e58ed398ef7aaa004cc8727abc5vboxsync#else
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync# define RTR3INTPTR_MIN INT64_MIN
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync#endif
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync/** Signed integer which can contain a HC ring-0 pointer. */
5b6e2c9a765c3c72295acc15791af8a700746956vboxsync#if R0_ARCH_BITS == 32
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsynctypedef int32_t RTR0INTPTR;
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync#elif R0_ARCH_BITS == 64
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsynctypedef int64_t RTR0INTPTR;
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync#else
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync# error Unsupported R0_ARCH_BITS value.
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync#endif
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync/** Pointer to signed integer which can contain a HC ring-0 pointer. */
e9a217d585085a6a6d129d27ca0d96a1b8e6d0eevboxsynctypedef RTR0INTPTR *PRTR0INTPTR;
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync/** Pointer to const signed integer which can contain a HC ring-0 pointer. */
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsynctypedef const RTR0INTPTR *PCRTR0INTPTR;
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync/** Max RTR0INTPTR value. */
b2f6d678ae33b72db5c41199a3e632454f48cfa1vboxsync#if R0_ARCH_BITS == 32
5ace91141404400247438502a84a418fba00c8cfvboxsync# define RTR0INTPTR_MAX INT32_MAX
e9a217d585085a6a6d129d27ca0d96a1b8e6d0eevboxsync#else
3cbb4f9a6a320e58ed398ef7aaa004cc8727abc5vboxsync# define RTR0INTPTR_MAX INT64_MAX
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync#endif
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync/** Min RTHCINTPTR value. */
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync#if R0_ARCH_BITS == 32
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync# define RTR0INTPTR_MIN INT32_MIN
5ace91141404400247438502a84a418fba00c8cfvboxsync#else
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync# define RTR0INTPTR_MIN INT64_MIN
7e960d3a0a8a3a84d7aba2cca45d72b1c31cc97bvboxsync#endif
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync
e17bd6c32a8dd64f2d42838f9028216465e2caf0vboxsync
e17bd6c32a8dd64f2d42838f9028216465e2caf0vboxsync/** Unsigned integer which can contain a HC pointer. */
e17bd6c32a8dd64f2d42838f9028216465e2caf0vboxsync#if HC_ARCH_BITS == 32
e17bd6c32a8dd64f2d42838f9028216465e2caf0vboxsynctypedef uint32_t RTHCUINTPTR;
08bc90fc2848c80bf8270bedc883745b8398e186vboxsync#elif HC_ARCH_BITS == 64
e17bd6c32a8dd64f2d42838f9028216465e2caf0vboxsynctypedef uint64_t RTHCUINTPTR;
e17bd6c32a8dd64f2d42838f9028216465e2caf0vboxsync#else
e17bd6c32a8dd64f2d42838f9028216465e2caf0vboxsync# error Unsupported HC_ARCH_BITS value.
3cac8f8c6923a3a89ecfccda5e89ad75f48658e0vboxsync#endif
e17bd6c32a8dd64f2d42838f9028216465e2caf0vboxsync/** Pointer to unsigned integer which can contain a HC pointer. */
e17bd6c32a8dd64f2d42838f9028216465e2caf0vboxsynctypedef RTHCUINTPTR *PRTHCUINTPTR;
5ace91141404400247438502a84a418fba00c8cfvboxsync/** Pointer to unsigned integer which can contain a HC pointer. */
5ace91141404400247438502a84a418fba00c8cfvboxsynctypedef const RTHCUINTPTR *PCRTHCUINTPTR;
5ace91141404400247438502a84a418fba00c8cfvboxsync/** Max RTHCUINTTPR value. */
5ace91141404400247438502a84a418fba00c8cfvboxsync#if HC_ARCH_BITS == 32
5ace91141404400247438502a84a418fba00c8cfvboxsync# define RTHCUINTPTR_MAX UINT32_MAX
5ace91141404400247438502a84a418fba00c8cfvboxsync#else
3cbb4f9a6a320e58ed398ef7aaa004cc8727abc5vboxsync# define RTHCUINTPTR_MAX UINT64_MAX
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync#endif
49748bb305bd71f672cd083af208f4bb08c5d6abvboxsync
49748bb305bd71f672cd083af208f4bb08c5d6abvboxsync/** Unsigned integer which can contain a HC ring-3 pointer. */
49748bb305bd71f672cd083af208f4bb08c5d6abvboxsync#if R3_ARCH_BITS == 32
49748bb305bd71f672cd083af208f4bb08c5d6abvboxsynctypedef uint32_t RTR3UINTPTR;
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync#elif R3_ARCH_BITS == 64
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsynctypedef uint64_t RTR3UINTPTR;
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync#else
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync# error Unsupported R3_ARCH_BITS value.
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync#endif
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync/** Pointer to unsigned integer which can contain a HC ring-3 pointer. */
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsynctypedef RTR3UINTPTR *PRTR3UINTPTR;
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync/** Pointer to unsigned integer which can contain a HC ring-3 pointer. */
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsynctypedef const RTR3UINTPTR *PCRTR3UINTPTR;
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync/** Max RTHCUINTTPR value. */
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync#if R3_ARCH_BITS == 32
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync# define RTR3UINTPTR_MAX UINT32_MAX
b9ca93dd1ad44cb8b27679dc5624be2f7b7f7af5vboxsync#else
b9ca93dd1ad44cb8b27679dc5624be2f7b7f7af5vboxsync# define RTR3UINTPTR_MAX UINT64_MAX
b9ca93dd1ad44cb8b27679dc5624be2f7b7f7af5vboxsync#endif
b9ca93dd1ad44cb8b27679dc5624be2f7b7f7af5vboxsync
b9ca93dd1ad44cb8b27679dc5624be2f7b7f7af5vboxsync/** Unsigned integer which can contain a HC ring-0 pointer. */
b9ca93dd1ad44cb8b27679dc5624be2f7b7f7af5vboxsync#if R0_ARCH_BITS == 32
7c3417bbf525c03163d54d151a277a981d5d61b6vboxsynctypedef uint32_t RTR0UINTPTR;
e9a217d585085a6a6d129d27ca0d96a1b8e6d0eevboxsync#elif R0_ARCH_BITS == 64
3cbb4f9a6a320e58ed398ef7aaa004cc8727abc5vboxsynctypedef uint64_t RTR0UINTPTR;
8b984478b755f4d3091b977d9beac9fb7434279fvboxsync#else
e9a217d585085a6a6d129d27ca0d96a1b8e6d0eevboxsync# error Unsupported R0_ARCH_BITS value.
e9a217d585085a6a6d129d27ca0d96a1b8e6d0eevboxsync#endif
3cbb4f9a6a320e58ed398ef7aaa004cc8727abc5vboxsync/** Pointer to unsigned integer which can contain a HC ring-0 pointer. */
51d4024e2984de499ecd878341898f71f55cf9e0vboxsynctypedef RTR0UINTPTR *PRTR0UINTPTR;
8b984478b755f4d3091b977d9beac9fb7434279fvboxsync/** Pointer to unsigned integer which can contain a HC ring-0 pointer. */
e9a217d585085a6a6d129d27ca0d96a1b8e6d0eevboxsynctypedef const RTR0UINTPTR *PCRTR0UINTPTR;
e9a217d585085a6a6d129d27ca0d96a1b8e6d0eevboxsync/** Max RTR0UINTTPR value. */
e9a217d585085a6a6d129d27ca0d96a1b8e6d0eevboxsync#if HC_ARCH_BITS == 32
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync# define RTR0UINTPTR_MAX UINT32_MAX
e17f587595bd5d3a7be56a892e3fd3a0ef83d268vboxsync#else
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync# define RTR0UINTPTR_MAX UINT64_MAX
3cbb4f9a6a320e58ed398ef7aaa004cc8727abc5vboxsync#endif
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync/** Host Physical Memory Address. */
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsynctypedef uint64_t RTHCPHYS;
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync/** Pointer to Host Physical Memory Address. */
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsynctypedef RTHCPHYS *PRTHCPHYS;
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync/** Pointer to const Host Physical Memory Address. */
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsynctypedef const RTHCPHYS *PCRTHCPHYS;
541071eef3db0e3e0e5497bb4b692efee42b1ad0vboxsync/** @def NIL_RTHCPHYS
ac6ddb9d00c1da301dfa25b0961dbd58b5f2f6e8vboxsync * NIL HC Physical Address.
ac6ddb9d00c1da301dfa25b0961dbd58b5f2f6e8vboxsync * NIL_RTHCPHYS is used to signal an invalid physical address, similar
ac6ddb9d00c1da301dfa25b0961dbd58b5f2f6e8vboxsync * to the NULL pointer.
ac6ddb9d00c1da301dfa25b0961dbd58b5f2f6e8vboxsync */
ac6ddb9d00c1da301dfa25b0961dbd58b5f2f6e8vboxsync#define NIL_RTHCPHYS (~(RTHCPHYS)0)
ac6ddb9d00c1da301dfa25b0961dbd58b5f2f6e8vboxsync/** Max RTHCPHYS value. */
ac6ddb9d00c1da301dfa25b0961dbd58b5f2f6e8vboxsync#define RTHCPHYS_MAX UINT64_MAX
ac6ddb9d00c1da301dfa25b0961dbd58b5f2f6e8vboxsync
ac6ddb9d00c1da301dfa25b0961dbd58b5f2f6e8vboxsync
ac6ddb9d00c1da301dfa25b0961dbd58b5f2f6e8vboxsync/** HC pointer. */
ac6ddb9d00c1da301dfa25b0961dbd58b5f2f6e8vboxsync#ifndef IN_RC
ac6ddb9d00c1da301dfa25b0961dbd58b5f2f6e8vboxsynctypedef void * RTHCPTR;
f351fab06d1e1507b72f5c574df71193061fd393vboxsync#else
ac6ddb9d00c1da301dfa25b0961dbd58b5f2f6e8vboxsynctypedef RTHCUINTPTR RTHCPTR;
ac6ddb9d00c1da301dfa25b0961dbd58b5f2f6e8vboxsync#endif
ac6ddb9d00c1da301dfa25b0961dbd58b5f2f6e8vboxsync/** Pointer to HC pointer. */
ac6ddb9d00c1da301dfa25b0961dbd58b5f2f6e8vboxsynctypedef RTHCPTR *PRTHCPTR;
2afbe132eb7931e0125141eabe3a48e08f1ffab5vboxsync/** Pointer to const HC pointer. */
2afbe132eb7931e0125141eabe3a48e08f1ffab5vboxsynctypedef const RTHCPTR *PCRTHCPTR;
ac6ddb9d00c1da301dfa25b0961dbd58b5f2f6e8vboxsync/** @def NIL_RTHCPTR
ac6ddb9d00c1da301dfa25b0961dbd58b5f2f6e8vboxsync * NIL HC pointer.
ac6ddb9d00c1da301dfa25b0961dbd58b5f2f6e8vboxsync */
ac6ddb9d00c1da301dfa25b0961dbd58b5f2f6e8vboxsync#define NIL_RTHCPTR ((RTHCPTR)0)
ac6ddb9d00c1da301dfa25b0961dbd58b5f2f6e8vboxsync/** Max RTHCPTR value. */
ac6ddb9d00c1da301dfa25b0961dbd58b5f2f6e8vboxsync#define RTHCPTR_MAX ((RTHCPTR)RTHCUINTPTR_MAX)
f351fab06d1e1507b72f5c574df71193061fd393vboxsync
f351fab06d1e1507b72f5c574df71193061fd393vboxsync
ac6ddb9d00c1da301dfa25b0961dbd58b5f2f6e8vboxsync/** HC ring-3 pointer. */
745f14b339a2afcb7757d10e5ec498a680162885vboxsync#ifdef IN_RING3
ac6ddb9d00c1da301dfa25b0961dbd58b5f2f6e8vboxsynctypedef void * RTR3PTR;
f351fab06d1e1507b72f5c574df71193061fd393vboxsync#else
ac6ddb9d00c1da301dfa25b0961dbd58b5f2f6e8vboxsynctypedef RTR3UINTPTR RTR3PTR;
ac6ddb9d00c1da301dfa25b0961dbd58b5f2f6e8vboxsync#endif
ac6ddb9d00c1da301dfa25b0961dbd58b5f2f6e8vboxsync/** Pointer to HC ring-3 pointer. */
1f19ba1642702523c0d2684aa2542d051f15275bvboxsynctypedef RTR3PTR *PRTR3PTR;
ac6ddb9d00c1da301dfa25b0961dbd58b5f2f6e8vboxsync/** Pointer to const HC ring-3 pointer. */
ac6ddb9d00c1da301dfa25b0961dbd58b5f2f6e8vboxsynctypedef const RTR3PTR *PCRTR3PTR;
ac6ddb9d00c1da301dfa25b0961dbd58b5f2f6e8vboxsync/** @def NIL_RTR3PTR
ac6ddb9d00c1da301dfa25b0961dbd58b5f2f6e8vboxsync * NIL HC ring-3 pointer.
ac6ddb9d00c1da301dfa25b0961dbd58b5f2f6e8vboxsync */
ac6ddb9d00c1da301dfa25b0961dbd58b5f2f6e8vboxsync#define NIL_RTR3PTR ((RTR3PTR)0)
ac6ddb9d00c1da301dfa25b0961dbd58b5f2f6e8vboxsync/** Max RTR3PTR value. */
ac6ddb9d00c1da301dfa25b0961dbd58b5f2f6e8vboxsync#define RTR3PTR_MAX ((RTR3PTR)RTR3UINTPTR_MAX)
ac6ddb9d00c1da301dfa25b0961dbd58b5f2f6e8vboxsync
ac6ddb9d00c1da301dfa25b0961dbd58b5f2f6e8vboxsync/** HC ring-0 pointer. */
ac6ddb9d00c1da301dfa25b0961dbd58b5f2f6e8vboxsync#ifdef IN_RING0
ac6ddb9d00c1da301dfa25b0961dbd58b5f2f6e8vboxsynctypedef void * RTR0PTR;
ac6ddb9d00c1da301dfa25b0961dbd58b5f2f6e8vboxsync#else
ac6ddb9d00c1da301dfa25b0961dbd58b5f2f6e8vboxsynctypedef RTR0UINTPTR RTR0PTR;
f351fab06d1e1507b72f5c574df71193061fd393vboxsync#endif
ac6ddb9d00c1da301dfa25b0961dbd58b5f2f6e8vboxsync/** Pointer to HC ring-0 pointer. */
ac6ddb9d00c1da301dfa25b0961dbd58b5f2f6e8vboxsynctypedef RTR0PTR *PRTR0PTR;
ac6ddb9d00c1da301dfa25b0961dbd58b5f2f6e8vboxsync/** Pointer to const HC ring-0 pointer. */
ac6ddb9d00c1da301dfa25b0961dbd58b5f2f6e8vboxsynctypedef const RTR0PTR *PCRTR0PTR;
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync/** @def NIL_RTR0PTR
541071eef3db0e3e0e5497bb4b692efee42b1ad0vboxsync * NIL HC ring-0 pointer.
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync */
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync#define NIL_RTR0PTR ((RTR0PTR)0)
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync/** Max RTR3PTR value. */
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync#define RTR0PTR_MAX ((RTR0PTR)RTR0UINTPTR_MAX)
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync/** Unsigned integer register in the host context. */
3cbb4f9a6a320e58ed398ef7aaa004cc8727abc5vboxsync#if HC_ARCH_BITS == 32
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsynctypedef uint32_t RTHCUINTREG;
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync#elif HC_ARCH_BITS == 64
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsynctypedef uint64_t RTHCUINTREG;
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync#else
3cbb4f9a6a320e58ed398ef7aaa004cc8727abc5vboxsync# error "Unsupported HC_ARCH_BITS!"
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync#endif
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync/** Pointer to an unsigned integer register in the host context. */
5ace91141404400247438502a84a418fba00c8cfvboxsynctypedef RTHCUINTREG *PRTHCUINTREG;
2afbe132eb7931e0125141eabe3a48e08f1ffab5vboxsync/** Pointer to a const unsigned integer register in the host context. */
09e2f92b8f54aa362088e216007b53ecdb42e283vboxsynctypedef const RTHCUINTREG *PCRTHCUINTREG;
09e2f92b8f54aa362088e216007b53ecdb42e283vboxsync
09e2f92b8f54aa362088e216007b53ecdb42e283vboxsync/** Unsigned integer register in the host ring-3 context. */
09e2f92b8f54aa362088e216007b53ecdb42e283vboxsync#if R3_ARCH_BITS == 32
5ace91141404400247438502a84a418fba00c8cfvboxsynctypedef uint32_t RTR3UINTREG;
5ace91141404400247438502a84a418fba00c8cfvboxsync#elif R3_ARCH_BITS == 64
5ace91141404400247438502a84a418fba00c8cfvboxsynctypedef uint64_t RTR3UINTREG;
09e2f92b8f54aa362088e216007b53ecdb42e283vboxsync#else
5ace91141404400247438502a84a418fba00c8cfvboxsync# error "Unsupported R3_ARCH_BITS!"
5ace91141404400247438502a84a418fba00c8cfvboxsync#endif
3123bb2477edc752585e4bbd8e4cfedaf87997d1vboxsync/** Pointer to an unsigned integer register in the host ring-3 context. */
247b55faa8d054157f2481e68caca36f4dc9542cvboxsynctypedef RTR3UINTREG *PRTR3UINTREG;
247b55faa8d054157f2481e68caca36f4dc9542cvboxsync/** Pointer to a const unsigned integer register in the host ring-3 context. */
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsynctypedef const RTR3UINTREG *PCRTR3UINTREG;
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync/** Unsigned integer register in the host ring-3 context. */
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync#if R0_ARCH_BITS == 32
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsynctypedef uint32_t RTR0UINTREG;
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync#elif R0_ARCH_BITS == 64
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsynctypedef uint64_t RTR0UINTREG;
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync#else
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync# error "Unsupported R3_ARCH_BITS!"
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync#endif
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync/** Pointer to an unsigned integer register in the host ring-3 context. */
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsynctypedef RTR0UINTREG *PRTR0UINTREG;
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync/** Pointer to a const unsigned integer register in the host ring-3 context. */
0975ae0a0fb615c945150c48e4a73187c1f4f84dvboxsynctypedef const RTR0UINTREG *PCRTR0UINTREG;
78a205e3fc6719d59e8c561b3d287d3a4f879852vboxsync
09e2f92b8f54aa362088e216007b53ecdb42e283vboxsync/** @} */
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync
9984bae4ef25be8afd95d184308adcfef6e2ec0dvboxsync
9984bae4ef25be8afd95d184308adcfef6e2ec0dvboxsync/** @defgroup grp_rt_types_gc Guest Context Basic Types
9e4166cf5ed4940f506bc718ea6c89bf7ed252c8vboxsync * @ingroup grp_rt_types
9984bae4ef25be8afd95d184308adcfef6e2ec0dvboxsync * @{
0975ae0a0fb615c945150c48e4a73187c1f4f84dvboxsync */
9e4166cf5ed4940f506bc718ea6c89bf7ed252c8vboxsync
0975ae0a0fb615c945150c48e4a73187c1f4f84dvboxsync/** Natural signed integer in the GC.
7e960d3a0a8a3a84d7aba2cca45d72b1c31cc97bvboxsync * @deprecated silly type. */
d07ea3c3faead54c0de83ab93f2b03dedfb819e2vboxsync#if GC_ARCH_BITS == 32
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsynctypedef int32_t RTGCINT;
09e2f92b8f54aa362088e216007b53ecdb42e283vboxsync#elif GC_ARCH_BITS == 64 /** @todo this isn't right, natural int is 32-bit, see RTHCINT. */
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsynctypedef int64_t RTGCINT;
09e2f92b8f54aa362088e216007b53ecdb42e283vboxsync#endif
09e2f92b8f54aa362088e216007b53ecdb42e283vboxsync/** Pointer to natural signed integer in GC.
09e2f92b8f54aa362088e216007b53ecdb42e283vboxsync * @deprecated silly type. */
09e2f92b8f54aa362088e216007b53ecdb42e283vboxsynctypedef RTGCINT *PRTGCINT;
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync/** Pointer to const natural signed integer in GC.
3cbb4f9a6a320e58ed398ef7aaa004cc8727abc5vboxsync * @deprecated silly type. */
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsynctypedef const RTGCINT *PCRTGCINT;
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync/** Natural unsigned integer in the GC.
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync * @deprecated silly type. */
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync#if GC_ARCH_BITS == 32
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsynctypedef uint32_t RTGCUINT;
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync#elif GC_ARCH_BITS == 64 /** @todo this isn't right, natural int is 32-bit, see RTHCUINT. */
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsynctypedef uint64_t RTGCUINT;
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync#endif
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync/** Pointer to natural unsigned integer in GC.
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync * @deprecated silly type. */
42c1972c22e09797b4b24afbd0ec114ed076c37cvboxsynctypedef RTGCUINT *PRTGCUINT;
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync/** Pointer to const natural unsigned integer in GC.
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync * @deprecated silly type. */
3cbb4f9a6a320e58ed398ef7aaa004cc8727abc5vboxsynctypedef const RTGCUINT *PCRTGCUINT;
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync/** Signed integer which can contain a GC pointer. */
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync#if GC_ARCH_BITS == 32
2afbe132eb7931e0125141eabe3a48e08f1ffab5vboxsynctypedef int32_t RTGCINTPTR;
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync#elif GC_ARCH_BITS == 64
3cbb4f9a6a320e58ed398ef7aaa004cc8727abc5vboxsynctypedef int64_t RTGCINTPTR;
1fb9c510656583ba12872e082125263a58d9bc6bvboxsync#endif
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync/** Pointer to signed integer which can contain a GC pointer. */
247b55faa8d054157f2481e68caca36f4dc9542cvboxsynctypedef RTGCINTPTR *PRTGCINTPTR;
2afbe132eb7931e0125141eabe3a48e08f1ffab5vboxsync/** Pointer to const signed integer which can contain a GC pointer. */
2afbe132eb7931e0125141eabe3a48e08f1ffab5vboxsynctypedef const RTGCINTPTR *PCRTGCINTPTR;
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync/** Unsigned integer which can contain a GC pointer. */
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync#if GC_ARCH_BITS == 32
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsynctypedef uint32_t RTGCUINTPTR;
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync#elif GC_ARCH_BITS == 64
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsynctypedef uint64_t RTGCUINTPTR;
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync#else
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync# error Unsupported GC_ARCH_BITS value.
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync#endif
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync/** Pointer to unsigned integer which can contain a GC pointer. */
9984bae4ef25be8afd95d184308adcfef6e2ec0dvboxsynctypedef RTGCUINTPTR *PRTGCUINTPTR;
9984bae4ef25be8afd95d184308adcfef6e2ec0dvboxsync/** Pointer to unsigned integer which can contain a GC pointer. */
9e4166cf5ed4940f506bc718ea6c89bf7ed252c8vboxsynctypedef const RTGCUINTPTR *PCRTGCUINTPTR;
9984bae4ef25be8afd95d184308adcfef6e2ec0dvboxsync
0975ae0a0fb615c945150c48e4a73187c1f4f84dvboxsync/** Unsigned integer which can contain a 32 bits GC pointer. */
9e4166cf5ed4940f506bc718ea6c89bf7ed252c8vboxsynctypedef uint32_t RTGCUINTPTR32;
0975ae0a0fb615c945150c48e4a73187c1f4f84dvboxsync/** Pointer to unsigned integer which can contain a 32 bits GC pointer. */
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsynctypedef RTGCUINTPTR32 *PRTGCUINTPTR32;
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync/** Pointer to unsigned integer which can contain a 32 bits GC pointer. */
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsynctypedef const RTGCUINTPTR32 *PCRTGCUINTPTR32;
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync
745f14b339a2afcb7757d10e5ec498a680162885vboxsync/** Unsigned integer which can contain a 64 bits GC pointer. */
1a25adaca81841abf5e6cdfed02eaff64941357dvboxsynctypedef uint64_t RTGCUINTPTR64;
f351fab06d1e1507b72f5c574df71193061fd393vboxsync/** Pointer to unsigned integer which can contain a 32 bits GC pointer. */
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsynctypedef RTGCUINTPTR64 *PRTGCUINTPTR64;
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync/** Pointer to unsigned integer which can contain a 32 bits GC pointer. */
3e6d3b0af632bdcd931b5149915c7b8be1a732cdvboxsynctypedef const RTGCUINTPTR64 *PCRTGCUINTPTR64;
3cbb4f9a6a320e58ed398ef7aaa004cc8727abc5vboxsync
a11c569636fa6838bd423f4631a9660a5a84204bvboxsync/** Guest Physical Memory Address.*/
5b6e2c9a765c3c72295acc15791af8a700746956vboxsynctypedef uint64_t RTGCPHYS;
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync/** Pointer to Guest Physical Memory Address. */
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsynctypedef RTGCPHYS *PRTGCPHYS;
036d626c5d4722da925dc8292f9248a5e09b4588vboxsync/** Pointer to const Guest Physical Memory Address. */
1fb9c510656583ba12872e082125263a58d9bc6bvboxsynctypedef const RTGCPHYS *PCRTGCPHYS;
1fb9c510656583ba12872e082125263a58d9bc6bvboxsync/** @def NIL_RTGCPHYS
1fb9c510656583ba12872e082125263a58d9bc6bvboxsync * NIL GC Physical Address.
1fb9c510656583ba12872e082125263a58d9bc6bvboxsync * NIL_RTGCPHYS is used to signal an invalid physical address, similar
1fb9c510656583ba12872e082125263a58d9bc6bvboxsync * to the NULL pointer. Note that this value may actually be valid in
1fb9c510656583ba12872e082125263a58d9bc6bvboxsync * some contexts.
1fb9c510656583ba12872e082125263a58d9bc6bvboxsync */
1fb9c510656583ba12872e082125263a58d9bc6bvboxsync#define NIL_RTGCPHYS (~(RTGCPHYS)0U)
1fb9c510656583ba12872e082125263a58d9bc6bvboxsync/** Max guest physical memory address value. */
1fb9c510656583ba12872e082125263a58d9bc6bvboxsync#define RTGCPHYS_MAX UINT64_MAX
1fb9c510656583ba12872e082125263a58d9bc6bvboxsync
1fb9c510656583ba12872e082125263a58d9bc6bvboxsync
1fb9c510656583ba12872e082125263a58d9bc6bvboxsync/** Guest Physical Memory Address; limited to 32 bits.*/
314f49cf51ddc0bbe5bc3551a02797b6636cf988vboxsynctypedef uint32_t RTGCPHYS32;
1fb9c510656583ba12872e082125263a58d9bc6bvboxsync/** Pointer to Guest Physical Memory Address. */
1fb9c510656583ba12872e082125263a58d9bc6bvboxsynctypedef RTGCPHYS32 *PRTGCPHYS32;
b40179b44fea65b72b2f226f62af1ed7bd3c48fcvboxsync/** Pointer to const Guest Physical Memory Address. */
1fb9c510656583ba12872e082125263a58d9bc6bvboxsynctypedef const RTGCPHYS32 *PCRTGCPHYS32;
1fb9c510656583ba12872e082125263a58d9bc6bvboxsync/** @def NIL_RTGCPHYS32
1fb9c510656583ba12872e082125263a58d9bc6bvboxsync * NIL GC Physical Address.
1fb9c510656583ba12872e082125263a58d9bc6bvboxsync * NIL_RTGCPHYS32 is used to signal an invalid physical address, similar
1fb9c510656583ba12872e082125263a58d9bc6bvboxsync * to the NULL pointer. Note that this value may actually be valid in
1fb9c510656583ba12872e082125263a58d9bc6bvboxsync * some contexts.
1fb9c510656583ba12872e082125263a58d9bc6bvboxsync */
1fb9c510656583ba12872e082125263a58d9bc6bvboxsync#define NIL_RTGCPHYS32 (~(RTGCPHYS32)0)
1fb9c510656583ba12872e082125263a58d9bc6bvboxsync
1fb9c510656583ba12872e082125263a58d9bc6bvboxsync
036d626c5d4722da925dc8292f9248a5e09b4588vboxsync/** Guest Physical Memory Address; limited to 64 bits.*/
1fb9c510656583ba12872e082125263a58d9bc6bvboxsynctypedef uint64_t RTGCPHYS64;
144ee46b1432959f2c8236923fac791ac25a8c1evboxsync/** Pointer to Guest Physical Memory Address. */
f351fab06d1e1507b72f5c574df71193061fd393vboxsynctypedef RTGCPHYS64 *PRTGCPHYS64;
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync/** Pointer to const Guest Physical Memory Address. */
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsynctypedef const RTGCPHYS64 *PCRTGCPHYS64;
541071eef3db0e3e0e5497bb4b692efee42b1ad0vboxsync/** @def NIL_RTGCPHYS64
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync * NIL GC Physical Address.
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync * NIL_RTGCPHYS64 is used to signal an invalid physical address, similar
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync * to the NULL pointer. Note that this value may actually be valid in
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync * some contexts.
b2f6d678ae33b72db5c41199a3e632454f48cfa1vboxsync */
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync#define NIL_RTGCPHYS64 (~(RTGCPHYS64)0)
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync/** Guest context pointer, 32 bits.
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync * Keep in mind that this type is an unsigned integer in
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync * HC and void pointer in GC.
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync */
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsynctypedef RTGCUINTPTR32 RTGCPTR32;
541071eef3db0e3e0e5497bb4b692efee42b1ad0vboxsync/** Pointer to a guest context pointer. */
541071eef3db0e3e0e5497bb4b692efee42b1ad0vboxsynctypedef RTGCPTR32 *PRTGCPTR32;
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync/** Pointer to a const guest context pointer. */
5b6e2c9a765c3c72295acc15791af8a700746956vboxsynctypedef const RTGCPTR32 *PCRTGCPTR32;
50df3da42ff6589b0ecc4f50f2288811bc370186vboxsync/** @def NIL_RTGCPTR32
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync * NIL GC pointer.
42c1972c22e09797b4b24afbd0ec114ed076c37cvboxsync */
5ace91141404400247438502a84a418fba00c8cfvboxsync#define NIL_RTGCPTR32 ((RTGCPTR32)0)
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync
2afbe132eb7931e0125141eabe3a48e08f1ffab5vboxsync/** Guest context pointer, 64 bits.
42c1972c22e09797b4b24afbd0ec114ed076c37cvboxsync */
b1c3cdef473df2fbc621d5da81acc82dbfb8a11avboxsynctypedef RTGCUINTPTR64 RTGCPTR64;
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync/** Pointer to a guest context pointer. */
14dfd448b0f1b9a46c4a4658a77752cb7561cd47vboxsynctypedef RTGCPTR64 *PRTGCPTR64;
6778b34cb96bef0fef23ebc461eb6a429d2907c5vboxsync/** Pointer to a const guest context pointer. */
6778b34cb96bef0fef23ebc461eb6a429d2907c5vboxsynctypedef const RTGCPTR64 *PCRTGCPTR64;
6778b34cb96bef0fef23ebc461eb6a429d2907c5vboxsync/** @def NIL_RTGCPTR64
6778b34cb96bef0fef23ebc461eb6a429d2907c5vboxsync * NIL GC pointer.
6778b34cb96bef0fef23ebc461eb6a429d2907c5vboxsync */
6778b34cb96bef0fef23ebc461eb6a429d2907c5vboxsync#define NIL_RTGCPTR64 ((RTGCPTR64)0)
6778b34cb96bef0fef23ebc461eb6a429d2907c5vboxsync
6778b34cb96bef0fef23ebc461eb6a429d2907c5vboxsync/** Guest context pointer.
614cbe11a7e5588dc8d369e223174b1441a09359vboxsync * Keep in mind that this type is an unsigned integer in
614cbe11a7e5588dc8d369e223174b1441a09359vboxsync * HC and void pointer in GC.
614cbe11a7e5588dc8d369e223174b1441a09359vboxsync */
614cbe11a7e5588dc8d369e223174b1441a09359vboxsync#if GC_ARCH_BITS == 64
ba919327d39360a78c5954ba29251e5e695e08b0vboxsynctypedef RTGCPTR64 RTGCPTR;
614cbe11a7e5588dc8d369e223174b1441a09359vboxsync/** Pointer to a guest context pointer. */
614cbe11a7e5588dc8d369e223174b1441a09359vboxsynctypedef PRTGCPTR64 PRTGCPTR;
614cbe11a7e5588dc8d369e223174b1441a09359vboxsync/** Pointer to a const guest context pointer. */
614cbe11a7e5588dc8d369e223174b1441a09359vboxsynctypedef PCRTGCPTR64 PCRTGCPTR;
32f9be50b34dbbdfceec5c81c0594d6a1d66d990vboxsync/** @def NIL_RTGCPTR
614cbe11a7e5588dc8d369e223174b1441a09359vboxsync * NIL GC pointer.
614cbe11a7e5588dc8d369e223174b1441a09359vboxsync */
9984bae4ef25be8afd95d184308adcfef6e2ec0dvboxsync# define NIL_RTGCPTR NIL_RTGCPTR64
614cbe11a7e5588dc8d369e223174b1441a09359vboxsync/** Max RTGCPTR value. */
614cbe11a7e5588dc8d369e223174b1441a09359vboxsync# define RTGCPTR_MAX UINT64_MAX
2634ec5cbf8f1fa0a968cd4664ead6df1fed730dvboxsync#elif GC_ARCH_BITS == 32
b0065cd95da56e4208839eb0d3963472c688a8d4vboxsynctypedef RTGCPTR32 RTGCPTR;
b0065cd95da56e4208839eb0d3963472c688a8d4vboxsync/** Pointer to a guest context pointer. */
614cbe11a7e5588dc8d369e223174b1441a09359vboxsynctypedef PRTGCPTR32 PRTGCPTR;
614cbe11a7e5588dc8d369e223174b1441a09359vboxsync/** Pointer to a const guest context pointer. */
b5b12033c1f7eaf82b038f06e2b9e464b9ddd8d2vboxsynctypedef PCRTGCPTR32 PCRTGCPTR;
d4b98dbce4cf7b3694b62d62a47553d399718dccvboxsync/** @def NIL_RTGCPTR
d4b98dbce4cf7b3694b62d62a47553d399718dccvboxsync * NIL GC pointer.
d4b98dbce4cf7b3694b62d62a47553d399718dccvboxsync */
d4b98dbce4cf7b3694b62d62a47553d399718dccvboxsync# define NIL_RTGCPTR NIL_RTGCPTR32
d4b98dbce4cf7b3694b62d62a47553d399718dccvboxsync/** Max RTGCPTR value. */
b6d0062d24490dd07b4a424e5809b3b2bc910c5avboxsync# define RTGCPTR_MAX UINT32_MAX
21d4a56532f8029ae299f552811a0b86c1909416vboxsync#else
b6d0062d24490dd07b4a424e5809b3b2bc910c5avboxsync# error "Unsupported GC_ARCH_BITS!"
b6d0062d24490dd07b4a424e5809b3b2bc910c5avboxsync#endif
b6d0062d24490dd07b4a424e5809b3b2bc910c5avboxsync
b6d0062d24490dd07b4a424e5809b3b2bc910c5avboxsync/** Unsigned integer register in the guest context. */
d4b98dbce4cf7b3694b62d62a47553d399718dccvboxsynctypedef uint32_t RTGCUINTREG32;
97b2abd2828499b2f4c2d5721952c9570ced1ebcvboxsync/** Pointer to an unsigned integer register in the guest context. */
97b2abd2828499b2f4c2d5721952c9570ced1ebcvboxsynctypedef RTGCUINTREG32 *PRTGCUINTREG32;
fd69ca9bd8b533bfa9ade45c1c2ff3116854e84avboxsync/** Pointer to a const unsigned integer register in the guest context. */
fd69ca9bd8b533bfa9ade45c1c2ff3116854e84avboxsynctypedef const RTGCUINTREG32 *PCRTGCUINTREG32;
fd69ca9bd8b533bfa9ade45c1c2ff3116854e84avboxsync
fd69ca9bd8b533bfa9ade45c1c2ff3116854e84avboxsynctypedef uint64_t RTGCUINTREG64;
fd69ca9bd8b533bfa9ade45c1c2ff3116854e84avboxsync/** Pointer to an unsigned integer register in the guest context. */
fd69ca9bd8b533bfa9ade45c1c2ff3116854e84avboxsynctypedef RTGCUINTREG64 *PRTGCUINTREG64;
b978e5849454446957177fd47ee98609ab0457a6vboxsync/** Pointer to a const unsigned integer register in the guest context. */
b978e5849454446957177fd47ee98609ab0457a6vboxsynctypedef const RTGCUINTREG64 *PCRTGCUINTREG64;
e556f4b8a69ebc1a21f128234fd69c854ad8cfdfvboxsync
e556f4b8a69ebc1a21f128234fd69c854ad8cfdfvboxsync#if GC_ARCH_BITS == 64
b978e5849454446957177fd47ee98609ab0457a6vboxsynctypedef RTGCUINTREG64 RTGCUINTREG;
5ace91141404400247438502a84a418fba00c8cfvboxsync#elif GC_ARCH_BITS == 32
5a12b9772d9cf396a0ba7f54db399817ba7a65bavboxsynctypedef RTGCUINTREG32 RTGCUINTREG;
b978e5849454446957177fd47ee98609ab0457a6vboxsync#else
b978e5849454446957177fd47ee98609ab0457a6vboxsync# error "Unsupported GC_ARCH_BITS!"
b978e5849454446957177fd47ee98609ab0457a6vboxsync#endif
5ace91141404400247438502a84a418fba00c8cfvboxsync/** Pointer to an unsigned integer register in the guest context. */
5ace91141404400247438502a84a418fba00c8cfvboxsynctypedef RTGCUINTREG *PRTGCUINTREG;
e0421ee4efb1bbf81bc4740b530fc245aed8152fvboxsync/** Pointer to a const unsigned integer register in the guest context. */
5ace91141404400247438502a84a418fba00c8cfvboxsynctypedef const RTGCUINTREG *PCRTGCUINTREG;
5ace91141404400247438502a84a418fba00c8cfvboxsync
5ace91141404400247438502a84a418fba00c8cfvboxsync/** @} */
541071eef3db0e3e0e5497bb4b692efee42b1ad0vboxsync
541071eef3db0e3e0e5497bb4b692efee42b1ad0vboxsync/** @defgroup grp_rt_types_rc Raw mode Context Basic Types
541071eef3db0e3e0e5497bb4b692efee42b1ad0vboxsync * @ingroup grp_rt_types
541071eef3db0e3e0e5497bb4b692efee42b1ad0vboxsync * @{
5ace91141404400247438502a84a418fba00c8cfvboxsync */
1999ae03c34840fa4d712fd2e020120b2cb7182avboxsync
01c7ae36dfb7eb93bef22d5ec6c1c0572eba3f24vboxsync/** Raw mode context pointer; a 32 bits guest context pointer.
541071eef3db0e3e0e5497bb4b692efee42b1ad0vboxsync * Keep in mind that this type is an unsigned integer in
541071eef3db0e3e0e5497bb4b692efee42b1ad0vboxsync * HC and void pointer in RC.
541071eef3db0e3e0e5497bb4b692efee42b1ad0vboxsync */
2b5a4cf3d77ab62dcbd882115b6d497547b20d29vboxsync#ifdef IN_RC
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsynctypedef void * RTRCPTR;
5ace91141404400247438502a84a418fba00c8cfvboxsync#else
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsynctypedef uint32_t RTRCPTR;
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync#endif
5ace91141404400247438502a84a418fba00c8cfvboxsync/** Pointer to a raw mode context pointer. */
5ace91141404400247438502a84a418fba00c8cfvboxsynctypedef RTRCPTR *PRTRCPTR;
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync/** Pointer to a const raw mode context pointer. */
1999ae03c34840fa4d712fd2e020120b2cb7182avboxsynctypedef const RTRCPTR *PCRTRCPTR;
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync/** @def NIL_RTGCPTR
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync * NIL RC pointer.
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync */
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync#define NIL_RTRCPTR ((RTRCPTR)0)
0f5d1b2abd9e82c7ee46f1327287c44856604bcbvboxsync/** @def RTRCPTR_MAX
2b5a4cf3d77ab62dcbd882115b6d497547b20d29vboxsync * The maximum value a RTRCPTR can have. Mostly used as INVALID value.
5ace91141404400247438502a84a418fba00c8cfvboxsync */
1999ae03c34840fa4d712fd2e020120b2cb7182avboxsync#define RTRCPTR_MAX ((RTRCPTR)UINT32_MAX)
20a793635760c71752932fde640ba328cab84348vboxsync
5ace91141404400247438502a84a418fba00c8cfvboxsync/** Raw mode context pointer, unsigned integer variant. */
3cbb4f9a6a320e58ed398ef7aaa004cc8727abc5vboxsynctypedef int32_t RTRCINTPTR;
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync/** @def RTRCUINTPTR_MAX
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync * The maximum value a RTRCUINPTR can have.
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync */
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync#define RTRCUINTPTR_MAX ((RTRCUINTPTR)UINT32_MAX)
3cbb4f9a6a320e58ed398ef7aaa004cc8727abc5vboxsync
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync/** Raw mode context pointer, signed integer variant. */
1fb9c510656583ba12872e082125263a58d9bc6bvboxsynctypedef uint32_t RTRCUINTPTR;
1fb9c510656583ba12872e082125263a58d9bc6bvboxsync/** @def RTRCINTPTR_MIN
1fb9c510656583ba12872e082125263a58d9bc6bvboxsync * The minimum value a RTRCINPTR can have.
e17f587595bd5d3a7be56a892e3fd3a0ef83d268vboxsync */
1fb9c510656583ba12872e082125263a58d9bc6bvboxsync#define RTRCINTPTR_MIN ((RTRCINTPTR)INT32_MIN)
1fb9c510656583ba12872e082125263a58d9bc6bvboxsync/** @def RTRCINTPTR_MAX
1fb9c510656583ba12872e082125263a58d9bc6bvboxsync * The maximum value a RTRCINPTR can have.
1fb9c510656583ba12872e082125263a58d9bc6bvboxsync */
01c7ae36dfb7eb93bef22d5ec6c1c0572eba3f24vboxsync#define RTRCINTPTR_MAX ((RTRCINTPTR)INT32_MAX)
1fb9c510656583ba12872e082125263a58d9bc6bvboxsync
1fb9c510656583ba12872e082125263a58d9bc6bvboxsync/** @} */
1fb9c510656583ba12872e082125263a58d9bc6bvboxsync
541071eef3db0e3e0e5497bb4b692efee42b1ad0vboxsync
541071eef3db0e3e0e5497bb4b692efee42b1ad0vboxsync/** @defgroup grp_rt_types_cc Current Context Basic Types
541071eef3db0e3e0e5497bb4b692efee42b1ad0vboxsync * @ingroup grp_rt_types
1fb9c510656583ba12872e082125263a58d9bc6bvboxsync * @{
1fb9c510656583ba12872e082125263a58d9bc6bvboxsync */
1fb9c510656583ba12872e082125263a58d9bc6bvboxsync
1fb9c510656583ba12872e082125263a58d9bc6bvboxsync/** Current Context Physical Memory Address.*/
541071eef3db0e3e0e5497bb4b692efee42b1ad0vboxsync#ifdef IN_RC
1fb9c510656583ba12872e082125263a58d9bc6bvboxsynctypedef RTGCPHYS RTCCPHYS;
1fb9c510656583ba12872e082125263a58d9bc6bvboxsync#else
541071eef3db0e3e0e5497bb4b692efee42b1ad0vboxsynctypedef RTHCPHYS RTCCPHYS;
1fb9c510656583ba12872e082125263a58d9bc6bvboxsync#endif
1fb9c510656583ba12872e082125263a58d9bc6bvboxsync/** Pointer to Current Context Physical Memory Address. */
1fb9c510656583ba12872e082125263a58d9bc6bvboxsynctypedef RTCCPHYS *PRTCCPHYS;
541071eef3db0e3e0e5497bb4b692efee42b1ad0vboxsync/** Pointer to const Current Context Physical Memory Address. */
541071eef3db0e3e0e5497bb4b692efee42b1ad0vboxsynctypedef const RTCCPHYS *PCRTCCPHYS;
1fb9c510656583ba12872e082125263a58d9bc6bvboxsync/** @def NIL_RTCCPHYS
1fb9c510656583ba12872e082125263a58d9bc6bvboxsync * NIL CC Physical Address.
1fb9c510656583ba12872e082125263a58d9bc6bvboxsync * NIL_RTCCPHYS is used to signal an invalid physical address, similar
1fb9c510656583ba12872e082125263a58d9bc6bvboxsync * to the NULL pointer.
1fb9c510656583ba12872e082125263a58d9bc6bvboxsync */
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync#ifdef IN_RC
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync# define NIL_RTCCPHYS NIL_RTGCPHYS
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync#else
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync# define NIL_RTCCPHYS NIL_RTHCPHYS
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync#endif
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync
3cbb4f9a6a320e58ed398ef7aaa004cc8727abc5vboxsync/** Unsigned integer register in the current context. */
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync#if ARCH_BITS == 32
09e2f92b8f54aa362088e216007b53ecdb42e283vboxsynctypedef uint32_t RTCCUINTREG;
09e2f92b8f54aa362088e216007b53ecdb42e283vboxsync#elif ARCH_BITS == 64
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsynctypedef uint64_t RTCCUINTREG;
09e2f92b8f54aa362088e216007b53ecdb42e283vboxsync#else
09e2f92b8f54aa362088e216007b53ecdb42e283vboxsync# error "Unsupported ARCH_BITS!"
09e2f92b8f54aa362088e216007b53ecdb42e283vboxsync#endif
28c928d1100d3b6a6d3506224cae25ad04732f73vboxsync/** Pointer to an unsigned integer register in the current context. */
09e2f92b8f54aa362088e216007b53ecdb42e283vboxsynctypedef RTCCUINTREG *PRTCCUINTREG;
09e2f92b8f54aa362088e216007b53ecdb42e283vboxsync/** Pointer to a const unsigned integer register in the current context. */
09e2f92b8f54aa362088e216007b53ecdb42e283vboxsynctypedef RTCCUINTREG const *PCRTCCUINTREG;
09e2f92b8f54aa362088e216007b53ecdb42e283vboxsync
09e2f92b8f54aa362088e216007b53ecdb42e283vboxsync/** Signed integer register in the current context. */
09e2f92b8f54aa362088e216007b53ecdb42e283vboxsync#if ARCH_BITS == 32
09e2f92b8f54aa362088e216007b53ecdb42e283vboxsynctypedef int32_t RTCCINTREG;
09e2f92b8f54aa362088e216007b53ecdb42e283vboxsync#elif ARCH_BITS == 64
09e2f92b8f54aa362088e216007b53ecdb42e283vboxsynctypedef int64_t RTCCINTREG;
09e2f92b8f54aa362088e216007b53ecdb42e283vboxsync#endif
09e2f92b8f54aa362088e216007b53ecdb42e283vboxsync/** Pointer to a signed integer register in the current context. */
28c928d1100d3b6a6d3506224cae25ad04732f73vboxsynctypedef RTCCINTREG *PRTCCINTREG;
09e2f92b8f54aa362088e216007b53ecdb42e283vboxsync/** Pointer to a const signed integer register in the current context. */
5ace91141404400247438502a84a418fba00c8cfvboxsynctypedef RTCCINTREG const *PCRTCCINTREG;
5ace91141404400247438502a84a418fba00c8cfvboxsync
09e2f92b8f54aa362088e216007b53ecdb42e283vboxsync/** @} */
09e2f92b8f54aa362088e216007b53ecdb42e283vboxsync
09e2f92b8f54aa362088e216007b53ecdb42e283vboxsync
09e2f92b8f54aa362088e216007b53ecdb42e283vboxsync/** Pointer to a critical section. */
09e2f92b8f54aa362088e216007b53ecdb42e283vboxsynctypedef struct RTCRITSECT *PRTCRITSECT;
09e2f92b8f54aa362088e216007b53ecdb42e283vboxsync/** Pointer to a const critical section. */
09e2f92b8f54aa362088e216007b53ecdb42e283vboxsynctypedef const struct RTCRITSECT *PCRTCRITSECT;
09e2f92b8f54aa362088e216007b53ecdb42e283vboxsync
09e2f92b8f54aa362088e216007b53ecdb42e283vboxsync
09e2f92b8f54aa362088e216007b53ecdb42e283vboxsync/** Condition variable handle. */
09e2f92b8f54aa362088e216007b53ecdb42e283vboxsynctypedef R3PTRTYPE(struct RTCONDVARINTERNAL *) RTCONDVAR;
09e2f92b8f54aa362088e216007b53ecdb42e283vboxsync/** Pointer to a condition variable handle. */
09e2f92b8f54aa362088e216007b53ecdb42e283vboxsynctypedef RTCONDVAR *PRTCONDVAR;
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync/** Nil condition variable handle. */
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync#define NIL_RTCONDVAR 0
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync
5b6e2c9a765c3c72295acc15791af8a700746956vboxsync/** File handle. */
08bc90fc2848c80bf8270bedc883745b8398e186vboxsynctypedef RTUINT RTFILE;
3cbb4f9a6a320e58ed398ef7aaa004cc8727abc5vboxsync/** Pointer to file handle. */
2b5a4cf3d77ab62dcbd882115b6d497547b20d29vboxsynctypedef RTFILE *PRTFILE;
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync/** Nil file handle. */
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync#define NIL_RTFILE (~(RTFILE)0)
b978e5849454446957177fd47ee98609ab0457a6vboxsync
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync/** Async I/O request handle. */
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsynctypedef R3PTRTYPE(struct RTFILEAIOREQINTERNAL *) RTFILEAIOREQ;
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync/** Pointer to a async I/O request handle. */
2b5a4cf3d77ab62dcbd882115b6d497547b20d29vboxsynctypedef RTFILEAIOREQ *PRTFILEAIOREQ;
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync/** Nil request handle. */
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync#define NIL_RTFILEAIOREQ 0
e17f587595bd5d3a7be56a892e3fd3a0ef83d268vboxsync
2b5a4cf3d77ab62dcbd882115b6d497547b20d29vboxsync/** Async I/O completion context handle. */
2b5a4cf3d77ab62dcbd882115b6d497547b20d29vboxsynctypedef R3PTRTYPE(struct RTFILEAIOCTXINTERNAL *) RTFILEAIOCTX;
2b5a4cf3d77ab62dcbd882115b6d497547b20d29vboxsync/** Pointer to a async I/O completion context handle. */
2b5a4cf3d77ab62dcbd882115b6d497547b20d29vboxsynctypedef RTFILEAIOCTX *PRTFILEAIOCTX;
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync/** Nil context handle. */
1999ae03c34840fa4d712fd2e020120b2cb7182avboxsync#define NIL_RTFILEAIOCTX 0
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync/** Loader module handle. */
74735ec6edd6640eebac8885fbb2dadc86b89cf5vboxsynctypedef R3PTRTYPE(struct RTLDRMODINTERNAL *) RTLDRMOD;
74735ec6edd6640eebac8885fbb2dadc86b89cf5vboxsync/** Pointer to a loader module handle. */
74735ec6edd6640eebac8885fbb2dadc86b89cf5vboxsynctypedef RTLDRMOD *PRTLDRMOD;
74735ec6edd6640eebac8885fbb2dadc86b89cf5vboxsync/** Nil loader module handle. */
74735ec6edd6640eebac8885fbb2dadc86b89cf5vboxsync#define NIL_RTLDRMOD 0
74735ec6edd6640eebac8885fbb2dadc86b89cf5vboxsync
74735ec6edd6640eebac8885fbb2dadc86b89cf5vboxsync/** Lock validator class handle. */
74735ec6edd6640eebac8885fbb2dadc86b89cf5vboxsynctypedef R3R0PTRTYPE(struct RTLOCKVALCLASSINT *) RTLOCKVALCLASS;
74735ec6edd6640eebac8885fbb2dadc86b89cf5vboxsync/** Pointer to a lock validator class handle. */
74735ec6edd6640eebac8885fbb2dadc86b89cf5vboxsynctypedef RTLOCKVALCLASS *PRTLOCKVALCLASS;
74735ec6edd6640eebac8885fbb2dadc86b89cf5vboxsync/** Nil lock validator class handle. */
74735ec6edd6640eebac8885fbb2dadc86b89cf5vboxsync#define NIL_RTLOCKVALCLASS ((RTLOCKVALCLASS)0)
74735ec6edd6640eebac8885fbb2dadc86b89cf5vboxsync
74735ec6edd6640eebac8885fbb2dadc86b89cf5vboxsync/** Ring-0 memory object handle. */
74735ec6edd6640eebac8885fbb2dadc86b89cf5vboxsynctypedef R0PTRTYPE(struct RTR0MEMOBJINTERNAL *) RTR0MEMOBJ;
74735ec6edd6640eebac8885fbb2dadc86b89cf5vboxsync/** Pointer to a Ring-0 memory object handle. */
0f5b937bdc21496925500f3ce418794a5a9a1351vboxsynctypedef RTR0MEMOBJ *PRTR0MEMOBJ;
74735ec6edd6640eebac8885fbb2dadc86b89cf5vboxsync/** Nil ring-0 memory object handle. */
74735ec6edd6640eebac8885fbb2dadc86b89cf5vboxsync#define NIL_RTR0MEMOBJ 0
74735ec6edd6640eebac8885fbb2dadc86b89cf5vboxsync
74735ec6edd6640eebac8885fbb2dadc86b89cf5vboxsync/** Native thread handle. */
74735ec6edd6640eebac8885fbb2dadc86b89cf5vboxsynctypedef RTHCUINTPTR RTNATIVETHREAD;
74735ec6edd6640eebac8885fbb2dadc86b89cf5vboxsync/** Pointer to an native thread handle. */
74735ec6edd6640eebac8885fbb2dadc86b89cf5vboxsynctypedef RTNATIVETHREAD *PRTNATIVETHREAD;
74735ec6edd6640eebac8885fbb2dadc86b89cf5vboxsync/** Nil native thread handle. */
74735ec6edd6640eebac8885fbb2dadc86b89cf5vboxsync#define NIL_RTNATIVETHREAD (~(RTNATIVETHREAD)0)
74735ec6edd6640eebac8885fbb2dadc86b89cf5vboxsync
74735ec6edd6640eebac8885fbb2dadc86b89cf5vboxsync/** Pipe handle. */
74735ec6edd6640eebac8885fbb2dadc86b89cf5vboxsynctypedef R3R0PTRTYPE(struct RTPIPEINTERNAL *) RTPIPE;
2b5a4cf3d77ab62dcbd882115b6d497547b20d29vboxsync/** Pointer to a pipe handle. */
2b5a4cf3d77ab62dcbd882115b6d497547b20d29vboxsynctypedef RTPIPE *PRTPIPE;
2b5a4cf3d77ab62dcbd882115b6d497547b20d29vboxsync/** Nil pipe handle.
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync * @remarks This is not 0 because of UNIX and OS/2 handle values. Take care! */
1171e4fb031146163c9a5a66bd9cbf3f2a5acdb6vboxsync#define NIL_RTPIPE ((RTPIPE)RTHCUINTPTR_MAX)
1171e4fb031146163c9a5a66bd9cbf3f2a5acdb6vboxsync
2b5a4cf3d77ab62dcbd882115b6d497547b20d29vboxsync/** @typedef RTPOLLSET
daf1af91919d2fe4bac56d58487210f747e4592avboxsync * Poll set handle. */
2b5a4cf3d77ab62dcbd882115b6d497547b20d29vboxsynctypedef R3R0PTRTYPE(struct RTPOLLSETINTERNAL *) RTPOLLSET;
2b5a4cf3d77ab62dcbd882115b6d497547b20d29vboxsync/** Pointer to a poll set handle. */
f3e9d2446012445807621d8dd95afb2c8cad2789vboxsynctypedef RTPOLLSET *PRTPOLLSET;
e17f587595bd5d3a7be56a892e3fd3a0ef83d268vboxsync/** Nil poll set handle handle. */
2b5a4cf3d77ab62dcbd882115b6d497547b20d29vboxsync#define NIL_RTPOLLSET ((RTPOLLSET)0)
e17f587595bd5d3a7be56a892e3fd3a0ef83d268vboxsync
e17f587595bd5d3a7be56a892e3fd3a0ef83d268vboxsync/** Process identifier. */
2b5a4cf3d77ab62dcbd882115b6d497547b20d29vboxsynctypedef uint32_t RTPROCESS;
541071eef3db0e3e0e5497bb4b692efee42b1ad0vboxsync/** Pointer to a process identifier. */
541071eef3db0e3e0e5497bb4b692efee42b1ad0vboxsynctypedef RTPROCESS *PRTPROCESS;
541071eef3db0e3e0e5497bb4b692efee42b1ad0vboxsync/** Nil process identifier. */
e17f587595bd5d3a7be56a892e3fd3a0ef83d268vboxsync#define NIL_RTPROCESS (~(RTPROCESS)0)
2b5a4cf3d77ab62dcbd882115b6d497547b20d29vboxsync
2b5a4cf3d77ab62dcbd882115b6d497547b20d29vboxsync/** Process ring-0 handle. */
2b5a4cf3d77ab62dcbd882115b6d497547b20d29vboxsynctypedef RTR0UINTPTR RTR0PROCESS;
2b5a4cf3d77ab62dcbd882115b6d497547b20d29vboxsync/** Pointer to a ring-0 process handle. */
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsynctypedef RTR0PROCESS *PRTR0PROCESS;
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync/** Nil ring-0 process handle. */
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync#define NIL_RTR0PROCESS (~(RTR0PROCESS)0)
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync
cb70d239cc25c714044be945b6f7ff4f3a8b7cdfvboxsync/** @typedef RTSEMEVENT
ac6ddb9d00c1da301dfa25b0961dbd58b5f2f6e8vboxsync * Event Semaphore handle. */
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsynctypedef R3R0PTRTYPE(struct RTSEMEVENTINTERNAL *) RTSEMEVENT;
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync/** Pointer to an event semaphore handle. */
ac6ddb9d00c1da301dfa25b0961dbd58b5f2f6e8vboxsynctypedef RTSEMEVENT *PRTSEMEVENT;
ac6ddb9d00c1da301dfa25b0961dbd58b5f2f6e8vboxsync/** Nil event semaphore handle. */
ac6ddb9d00c1da301dfa25b0961dbd58b5f2f6e8vboxsync#define NIL_RTSEMEVENT 0
ac6ddb9d00c1da301dfa25b0961dbd58b5f2f6e8vboxsync
ac6ddb9d00c1da301dfa25b0961dbd58b5f2f6e8vboxsync/** @typedef RTSEMEVENTMULTI
e17f587595bd5d3a7be56a892e3fd3a0ef83d268vboxsync * Event Multiple Release Semaphore handle. */
ac6ddb9d00c1da301dfa25b0961dbd58b5f2f6e8vboxsynctypedef R3R0PTRTYPE(struct RTSEMEVENTMULTIINTERNAL *) RTSEMEVENTMULTI;
21d4a56532f8029ae299f552811a0b86c1909416vboxsync/** Pointer to an event multiple release semaphore handle. */
4b808cd07fd33b8a3edd0588dc43615686deb0e3vboxsynctypedef RTSEMEVENTMULTI *PRTSEMEVENTMULTI;
4b808cd07fd33b8a3edd0588dc43615686deb0e3vboxsync/** Nil multiple release event semaphore handle. */
4b808cd07fd33b8a3edd0588dc43615686deb0e3vboxsync#define NIL_RTSEMEVENTMULTI 0
4b808cd07fd33b8a3edd0588dc43615686deb0e3vboxsync
4b808cd07fd33b8a3edd0588dc43615686deb0e3vboxsync/** @typedef RTSEMFASTMUTEX
4b808cd07fd33b8a3edd0588dc43615686deb0e3vboxsync * Fast mutex Semaphore handle. */
5b6e2c9a765c3c72295acc15791af8a700746956vboxsynctypedef R3R0PTRTYPE(struct RTSEMFASTMUTEXINTERNAL *) RTSEMFASTMUTEX;
b5b12033c1f7eaf82b038f06e2b9e464b9ddd8d2vboxsync/** Pointer to a fast mutex semaphore handle. */
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsynctypedef RTSEMFASTMUTEX *PRTSEMFASTMUTEX;
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync/** Nil fast mutex semaphore handle. */
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync#define NIL_RTSEMFASTMUTEX 0
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync/** @typedef RTSEMMUTEX
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync * Mutex Semaphore handle. */
2cd06fc737773d015b5268b9e4dfba5997915957vboxsynctypedef R3R0PTRTYPE(struct RTSEMMUTEXINTERNAL *) RTSEMMUTEX;
70aa086e9e9d2f85d2e997d0e69169018a001e54vboxsync/** Pointer to a mutex semaphore handle. */
70aa086e9e9d2f85d2e997d0e69169018a001e54vboxsynctypedef RTSEMMUTEX *PRTSEMMUTEX;
2b5a4cf3d77ab62dcbd882115b6d497547b20d29vboxsync/** Nil mutex semaphore handle. */
2b5a4cf3d77ab62dcbd882115b6d497547b20d29vboxsync#define NIL_RTSEMMUTEX 0
2b5a4cf3d77ab62dcbd882115b6d497547b20d29vboxsync
2b5a4cf3d77ab62dcbd882115b6d497547b20d29vboxsync/** @typedef RTSEMSPINMUTEX
2b5a4cf3d77ab62dcbd882115b6d497547b20d29vboxsync * Spinning mutex Semaphore handle. */
2b5a4cf3d77ab62dcbd882115b6d497547b20d29vboxsynctypedef R3R0PTRTYPE(struct RTSEMSPINMUTEXINTERNAL *) RTSEMSPINMUTEX;
2b5a4cf3d77ab62dcbd882115b6d497547b20d29vboxsync/** Pointer to a spinning mutex semaphore handle. */
2b5a4cf3d77ab62dcbd882115b6d497547b20d29vboxsynctypedef RTSEMSPINMUTEX *PRTSEMSPINMUTEX;
2634ec5cbf8f1fa0a968cd4664ead6df1fed730dvboxsync/** Nil spinning mutex semaphore handle. */
2b5a4cf3d77ab62dcbd882115b6d497547b20d29vboxsync#define NIL_RTSEMSPINMUTEX 0
016bd61cdd14201a24f289559b0cc333d8c94748vboxsync
016bd61cdd14201a24f289559b0cc333d8c94748vboxsync/** @typedef RTSEMRW
016bd61cdd14201a24f289559b0cc333d8c94748vboxsync * Read/Write Semaphore handle. */
016bd61cdd14201a24f289559b0cc333d8c94748vboxsynctypedef R3R0PTRTYPE(struct RTSEMRWINTERNAL *) RTSEMRW;
b0065cd95da56e4208839eb0d3963472c688a8d4vboxsync/** Pointer to a read/write semaphore handle. */
a46e399d5426a79f6f7e18d0ba85c505280e9386vboxsynctypedef RTSEMRW *PRTSEMRW;
4584ef6026a823006bea5acbeb13dc4efe50da69vboxsync/** Nil read/write semaphore handle. */
9bebc668ed1ad5c93d92ff98fee1cd7dca55f6d5vboxsync#define NIL_RTSEMRW 0
2634ec5cbf8f1fa0a968cd4664ead6df1fed730dvboxsync
4584ef6026a823006bea5acbeb13dc4efe50da69vboxsync/** @typedef RTSEMXROADS
4584ef6026a823006bea5acbeb13dc4efe50da69vboxsync * Crossroads semaphore handle. */
2b5a4cf3d77ab62dcbd882115b6d497547b20d29vboxsynctypedef R3R0PTRTYPE(struct RTSEMXROADSINTERNAL *) RTSEMXROADS;
2634ec5cbf8f1fa0a968cd4664ead6df1fed730dvboxsync/** Pointer to a crossroads semaphore handle. */
2b5a4cf3d77ab62dcbd882115b6d497547b20d29vboxsynctypedef RTSEMXROADS *PRTSEMXROADS;
69deddbc68802f1cf1c3a404a9f816b8accb3385vboxsync/** Nil crossroads semaphore handle. */
b40179b44fea65b72b2f226f62af1ed7bd3c48fcvboxsync#define NIL_RTSEMXROADS ((RTSEMXROADS)0)
e17f587595bd5d3a7be56a892e3fd3a0ef83d268vboxsync
2634ec5cbf8f1fa0a968cd4664ead6df1fed730dvboxsync/** Spinlock handle. */
13b9db9ae2c12b6c4e00eda5c79772d57a0d29e1vboxsynctypedef R3R0PTRTYPE(struct RTSPINLOCKINTERNAL *) RTSPINLOCK;
2634ec5cbf8f1fa0a968cd4664ead6df1fed730dvboxsync/** Pointer to a spinlock handle. */
a46e399d5426a79f6f7e18d0ba85c505280e9386vboxsynctypedef RTSPINLOCK *PRTSPINLOCK;
a46e399d5426a79f6f7e18d0ba85c505280e9386vboxsync/** Nil spinlock handle. */
a46e399d5426a79f6f7e18d0ba85c505280e9386vboxsync#define NIL_RTSPINLOCK 0
13b9db9ae2c12b6c4e00eda5c79772d57a0d29e1vboxsync
13b9db9ae2c12b6c4e00eda5c79772d57a0d29e1vboxsync/** Socket handle. */
69deddbc68802f1cf1c3a404a9f816b8accb3385vboxsynctypedef R3R0PTRTYPE(struct RTSOCKETINT *) RTSOCKET;
b0065cd95da56e4208839eb0d3963472c688a8d4vboxsync/** Pointer to socket handle. */
13b9db9ae2c12b6c4e00eda5c79772d57a0d29e1vboxsynctypedef RTSOCKET *PRTSOCKET;
13b9db9ae2c12b6c4e00eda5c79772d57a0d29e1vboxsync/** Nil socket handle. */
21d4a56532f8029ae299f552811a0b86c1909416vboxsync#define NIL_RTSOCKET ((RTSOCKET)0)
13b9db9ae2c12b6c4e00eda5c79772d57a0d29e1vboxsync
21d4a56532f8029ae299f552811a0b86c1909416vboxsync/** Pointer to a RTTCPSERVER handle. */
13b9db9ae2c12b6c4e00eda5c79772d57a0d29e1vboxsynctypedef struct RTTCPSERVER *PRTTCPSERVER;
13b9db9ae2c12b6c4e00eda5c79772d57a0d29e1vboxsync/** Pointer to a RTTCPSERVER handle. */
13b9db9ae2c12b6c4e00eda5c79772d57a0d29e1vboxsynctypedef PRTTCPSERVER *PPRTTCPSERVER;
2634ec5cbf8f1fa0a968cd4664ead6df1fed730dvboxsync/** Nil RTTCPSERVER handle. */
13b9db9ae2c12b6c4e00eda5c79772d57a0d29e1vboxsync#define NIL_RTTCPSERVER ((PRTTCPSERVER)0)
13b9db9ae2c12b6c4e00eda5c79772d57a0d29e1vboxsync
13b9db9ae2c12b6c4e00eda5c79772d57a0d29e1vboxsync/** Thread handle.*/
2634ec5cbf8f1fa0a968cd4664ead6df1fed730dvboxsynctypedef R3R0PTRTYPE(struct RTTHREADINT *) RTTHREAD;
2634ec5cbf8f1fa0a968cd4664ead6df1fed730dvboxsync/** Pointer to thread handle. */
13b9db9ae2c12b6c4e00eda5c79772d57a0d29e1vboxsynctypedef RTTHREAD *PRTTHREAD;
2634ec5cbf8f1fa0a968cd4664ead6df1fed730dvboxsync/** Nil thread handle. */
13b9db9ae2c12b6c4e00eda5c79772d57a0d29e1vboxsync#define NIL_RTTHREAD 0
13b9db9ae2c12b6c4e00eda5c79772d57a0d29e1vboxsync
b0065cd95da56e4208839eb0d3963472c688a8d4vboxsync/** A TLS index. */
b0065cd95da56e4208839eb0d3963472c688a8d4vboxsynctypedef RTHCINTPTR RTTLS;
13b9db9ae2c12b6c4e00eda5c79772d57a0d29e1vboxsync/** Pointer to a TLS index. */
13b9db9ae2c12b6c4e00eda5c79772d57a0d29e1vboxsynctypedef RTTLS *PRTTLS;
13b9db9ae2c12b6c4e00eda5c79772d57a0d29e1vboxsync/** Pointer to a const TLS index. */
13b9db9ae2c12b6c4e00eda5c79772d57a0d29e1vboxsynctypedef RTTLS const *PCRTTLS;
13b9db9ae2c12b6c4e00eda5c79772d57a0d29e1vboxsync/** NIL TLS index value. */
2634ec5cbf8f1fa0a968cd4664ead6df1fed730dvboxsync#define NIL_RTTLS ((RTTLS)-1)
13b9db9ae2c12b6c4e00eda5c79772d57a0d29e1vboxsync
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync/** Handle to a simple heap. */
541071eef3db0e3e0e5497bb4b692efee42b1ad0vboxsynctypedef R3R0PTRTYPE(struct RTHEAPSIMPLEINTERNAL *) RTHEAPSIMPLE;
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync/** Pointer to a handle to a simple heap. */
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsynctypedef RTHEAPSIMPLE *PRTHEAPSIMPLE;
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync/** NIL simple heap handle. */
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync#define NIL_RTHEAPSIMPLE ((RTHEAPSIMPLE)0)
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync/** Handle to a offset based heap. */
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsynctypedef R3R0PTRTYPE(struct RTHEAPOFFSETINTERNAL *) RTHEAPOFFSET;
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync/** Pointer to a handle to a offset based heap. */
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsynctypedef RTHEAPOFFSET *PRTHEAPOFFSET;
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync/** NIL offset based heap handle. */
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync#define NIL_RTHEAPOFFSET ((RTHEAPOFFSET)0)
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync/** Handle to an environment block. */
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsynctypedef R3PTRTYPE(struct RTENVINTERNAL *) RTENV;
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync/** Pointer to a handle to an environment block. */
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsynctypedef RTENV *PRTENV;
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync/** NIL simple heap handle. */
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync#define NIL_RTENV ((RTENV)0)
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync/** A CPU identifier.
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync * @remarks This doesn't have to correspond to the APIC ID (intel/amd). Nor
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync * does it have to correspond to the bits in the affinity mask, at
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync * least not until we've sorted out Windows NT. */
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsynctypedef uint32_t RTCPUID;
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync/** Pointer to a CPU identifier. */
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsynctypedef RTCPUID *PRTCPUID;
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync/** Pointer to a const CPU identifier. */
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsynctypedef RTCPUID const *PCRTCPUID;
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync/** Nil CPU Id. */
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync#define NIL_RTCPUID ((RTCPUID)~0)
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync/** A CPU set.
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync * Treat this as an opaque type and always use RTCpuSet* for manupulating it.
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync * @remarks Subject to change. */
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsynctypedef uint64_t RTCPUSET;
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync/** Pointer to a CPU set. */
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsynctypedef RTCPUSET *PRTCPUSET;
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync/** Pointer to a const CPU set. */
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsynctypedef RTCPUSET const *PCRTCPUSET;
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync/** A handle table handle. */
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsynctypedef R3R0PTRTYPE(struct RTHANDLETABLEINT *) RTHANDLETABLE;
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync/** A pointer to a handle table handle. */
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsynctypedef RTHANDLETABLE *PRTHANDLETABLE;
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync/** @def NIL_RTHANDLETABLE
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync * NIL handle table handle. */
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync#define NIL_RTHANDLETABLE ((RTHANDLETABLE)0)
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync/** A handle to a low resolution timer. */
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsynctypedef R3R0PTRTYPE(struct RTTIMERLRINT *) RTTIMERLR;
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync/** A pointer to a low resolution timer handle. */
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsynctypedef RTTIMERLR *PRTTIMERLR;
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync/** @def NIL_RTTIMERLR
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync * NIL low resolution timer handle value. */
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync#define NIL_RTTIMERLR ((RTTIMERLR)0)
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync/** Handle to a random number generator. */
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsynctypedef R3R0PTRTYPE(struct RTRANDINT *) RTRAND;
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync/** Pointer to a random number generator handle. */
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsynctypedef RTRAND *PRTRAND;
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync/** NIL random number genrator handle value. */
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync#define NIL_RTRAND ((RTRAND)0)
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync/** Debug address space handle. */
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsynctypedef R3R0PTRTYPE(struct RTDBGASINT *) RTDBGAS;
70aa086e9e9d2f85d2e997d0e69169018a001e54vboxsync/** Pointer to a debug address space handle. */
13b9db9ae2c12b6c4e00eda5c79772d57a0d29e1vboxsynctypedef RTDBGAS *PRTDBGAS;
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync/** NIL debug address space handle. */
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync#define NIL_RTDBGAS ((RTDBGAS)0)
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync/** Debug module handle. */
01cc79d6798a7ad8b8041ddb2b67fc8b37bf0b37vboxsynctypedef R3R0PTRTYPE(struct RTDBGMODINT *) RTDBGMOD;
01cc79d6798a7ad8b8041ddb2b67fc8b37bf0b37vboxsync/** Pointer to a debug module handle. */
01cc79d6798a7ad8b8041ddb2b67fc8b37bf0b37vboxsynctypedef RTDBGMOD *PRTDBGMOD;
01cc79d6798a7ad8b8041ddb2b67fc8b37bf0b37vboxsync/** NIL debug module handle. */
01cc79d6798a7ad8b8041ddb2b67fc8b37bf0b37vboxsync#define NIL_RTDBGMOD ((RTDBGMOD)0)
01cc79d6798a7ad8b8041ddb2b67fc8b37bf0b37vboxsync
01cc79d6798a7ad8b8041ddb2b67fc8b37bf0b37vboxsync/** Manifest handle. */
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsynctypedef struct RTMANIFESTINT *RTMANIFEST;
2634ec5cbf8f1fa0a968cd4664ead6df1fed730dvboxsync/** Pointer to a manifest handle. */
b0065cd95da56e4208839eb0d3963472c688a8d4vboxsynctypedef RTMANIFEST *PRTMANIFEST;
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync/** NIL manifest handle. */
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync#define NIL_RTMANIFEST ((RTMANIFEST)~(uintptr_t)0)
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync
4584ef6026a823006bea5acbeb13dc4efe50da69vboxsync/** Memory pool handle. */
9bebc668ed1ad5c93d92ff98fee1cd7dca55f6d5vboxsynctypedef R3R0PTRTYPE(struct RTMEMPOOLINT *) RTMEMPOOL;
2634ec5cbf8f1fa0a968cd4664ead6df1fed730dvboxsync/** Pointer to a memory pool handle. */
4584ef6026a823006bea5acbeb13dc4efe50da69vboxsynctypedef RTMEMPOOL *PRTMEMPOOL;
01cc79d6798a7ad8b8041ddb2b67fc8b37bf0b37vboxsync/** NIL memory pool handle. */
01cc79d6798a7ad8b8041ddb2b67fc8b37bf0b37vboxsync#define NIL_RTMEMPOOL ((RTMEMPOOL)0)
4584ef6026a823006bea5acbeb13dc4efe50da69vboxsync/** The default memory pool handle. */
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync#define RTMEMPOOL_DEFAULT ((RTMEMPOOL)-2)
01cc79d6798a7ad8b8041ddb2b67fc8b37bf0b37vboxsync
01cc79d6798a7ad8b8041ddb2b67fc8b37bf0b37vboxsync/** String cache handle. */
01cc79d6798a7ad8b8041ddb2b67fc8b37bf0b37vboxsynctypedef R3R0PTRTYPE(struct RTSTRCACHEINT *) RTSTRCACHE;
01cc79d6798a7ad8b8041ddb2b67fc8b37bf0b37vboxsync/** Pointer to a string cache handle. */
01cc79d6798a7ad8b8041ddb2b67fc8b37bf0b37vboxsynctypedef RTSTRCACHE *PRTSTRCACHE;
01cc79d6798a7ad8b8041ddb2b67fc8b37bf0b37vboxsync/** NIL string cache handle. */
b40179b44fea65b72b2f226f62af1ed7bd3c48fcvboxsync#define NIL_RTSTRCACHE ((RTSTRCACHE)0)
01cc79d6798a7ad8b8041ddb2b67fc8b37bf0b37vboxsync/** The default string cache handle. */
01cc79d6798a7ad8b8041ddb2b67fc8b37bf0b37vboxsync#define RTSTRCACHE_DEFAULT ((RTSTRCACHE)-2)
01cc79d6798a7ad8b8041ddb2b67fc8b37bf0b37vboxsync
01cc79d6798a7ad8b8041ddb2b67fc8b37bf0b37vboxsync
01cc79d6798a7ad8b8041ddb2b67fc8b37bf0b37vboxsync/** Virtual Filesystem handle. */
2634ec5cbf8f1fa0a968cd4664ead6df1fed730dvboxsynctypedef struct RTVFSINTERNAL *RTVFS;
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync/** Pointer to a VFS handle. */
1171e4fb031146163c9a5a66bd9cbf3f2a5acdb6vboxsynctypedef RTVFS *PRTVFS;
b40179b44fea65b72b2f226f62af1ed7bd3c48fcvboxsync/** A NIL VFS handle. */
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync#define NIL_RTVFS ((RTVFS)~(uintptr_t)0)
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync
69deddbc68802f1cf1c3a404a9f816b8accb3385vboxsync/** Virtual Filesystem base object handle. */
b40179b44fea65b72b2f226f62af1ed7bd3c48fcvboxsynctypedef struct RTVFSOBJINTERNAL *RTVFSOBJ;
2634ec5cbf8f1fa0a968cd4664ead6df1fed730dvboxsync/** Pointer to a VFS base object handle. */
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsynctypedef RTVFSOBJ *PRTVFSOBJ;
2634ec5cbf8f1fa0a968cd4664ead6df1fed730dvboxsync/** A NIL VFS base object handle. */
2634ec5cbf8f1fa0a968cd4664ead6df1fed730dvboxsync#define NIL_RTVFSOBJ ((RTVFSOBJ)~(uintptr_t)0)
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync/** Virtual Filesystem directory handle. */
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsynctypedef struct RTVFSDIRINTERNAL *RTVFSDIR;
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync/** Pointer to a VFS directory handle. */
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsynctypedef RTVFSDIR *PRTVFSDIR;
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync/** A NIL VFS directory handle. */
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync#define NIL_RTVFSDIR ((RTVFSDIR)~(uintptr_t)0)
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync/** Virtual Filesystem filesystem stream handle. */
c39952b427f31961ee5281dcdd492ad847ca74bbvboxsynctypedef struct RTVFSFSSTREAMINTERNAL *RTVFSFSSTREAM;
b40179b44fea65b72b2f226f62af1ed7bd3c48fcvboxsync/** Pointer to a VFS filesystem stream handle. */
b40179b44fea65b72b2f226f62af1ed7bd3c48fcvboxsynctypedef RTVFSFSSTREAM *PRTVFSFSSTREAM;
2634ec5cbf8f1fa0a968cd4664ead6df1fed730dvboxsync/** A NIL VFS filesystem stream handle. */
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync#define NIL_RTVFSFSSTREAM ((RTVFSFSSTREAM)~(uintptr_t)0)
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync/** Virtual Filesystem I/O stream handle. */
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsynctypedef struct RTVFSIOSTREAMINTERNAL *RTVFSIOSTREAM;
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync/** Pointer to a VFS I/O stream handle. */
541071eef3db0e3e0e5497bb4b692efee42b1ad0vboxsynctypedef RTVFSIOSTREAM *PRTVFSIOSTREAM;
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync/** A NIL VFS I/O stream handle. */
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync#define NIL_RTVFSIOSTREAM ((RTVFSIOSTREAM)~(uintptr_t)0)
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync/** Virtual Filesystem file handle. */
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsynctypedef struct RTVFSFILEINTERNAL *RTVFSFILE;
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync/** Pointer to a VFS file handle. */
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsynctypedef RTVFSFILE *PRTVFSFILE;
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync/** A NIL VFS file handle. */
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync#define NIL_RTVFSFILE ((RTVFSFILE)~(uintptr_t)0)
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync/** Virtual Filesystem symbolic link handle. */
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsynctypedef struct RTVFSSYMLINKINTERNAL *RTVFSSYMLINK;
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync/** Pointer to a VFS symbolic link handle. */
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsynctypedef RTVFSSYMLINK *PRTVFSSYMLINK;
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync/** A NIL VFS symbolic link handle. */
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync#define NIL_RTVFSSYMLINK ((RTVFSSYMLINK)~(uintptr_t)0)
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync/**
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync * Handle type.
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync *
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync * This is usually used together with RTHANDLEUNION.
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync */
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsynctypedef enum RTHANDLETYPE
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync{
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync /** The invalid zero value. */
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync RTHANDLETYPE_INVALID = 0,
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync /** File handle. */
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync RTHANDLETYPE_FILE,
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync /** Pipe handle */
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync RTHANDLETYPE_PIPE,
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync /** Socket handle. */
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync RTHANDLETYPE_SOCKET,
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync /** Thread handle. */
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync RTHANDLETYPE_THREAD,
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync /** The end of the valid values. */
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync RTHANDLETYPE_END,
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync /** The 32-bit type blow up. */
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync RTHANDLETYPE_32BIT_HACK = 0x7fffffff
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync} RTHANDLETYPE;
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync/** Pointer to a handle type. */
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsynctypedef RTHANDLETYPE *PRTHANDLETYPE;
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync/**
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync * Handle union.
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync *
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync * This is usually used together with RTHANDLETYPE or as RTHANDLE.
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync */
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsynctypedef union RTHANDLEUNION
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync{
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync RTFILE hFile; /**< File handle. */
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync RTPIPE hPipe; /**< Pipe handle. */
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync RTSOCKET hSocket; /**< Socket handle. */
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync RTTHREAD hThread; /**< Thread handle. */
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync /** Generic integer handle value.
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync * Note that RTFILE is not yet pointer sized, so accessing it via this member
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync * isn't necessarily safe or fully portable. */
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync RTHCUINTPTR uInt;
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync} RTHANDLEUNION;
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync/** Pointer to a handle union. */
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsynctypedef RTHANDLEUNION *PRTHANDLEUNION;
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync/** Pointer to a const handle union. */
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsynctypedef RTHANDLEUNION const *PCRTHANDLEUNION;
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync/**
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync * Generic handle.
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync */
541071eef3db0e3e0e5497bb4b692efee42b1ad0vboxsynctypedef struct RTHANDLE
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync{
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync /** The handle type. */
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync RTHANDLETYPE enmType;
b2f6d678ae33b72db5c41199a3e632454f48cfa1vboxsync /** The handle value. */
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync RTHANDLEUNION u;
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync} RTHANDLE;
01cc79d6798a7ad8b8041ddb2b67fc8b37bf0b37vboxsync/** Pointer to a generic handle. */
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsynctypedef RTHANDLE *PRTHANDLE;
01cc79d6798a7ad8b8041ddb2b67fc8b37bf0b37vboxsync/** Pointer to a const generic handle. */
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsynctypedef RTHANDLE const *PCRTHANDLE;
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync/**
ef481e64bafc49f1232767ce12c3fa69a5d5fe50vboxsync * Standard handles.
ef481e64bafc49f1232767ce12c3fa69a5d5fe50vboxsync *
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync * @remarks These have the correct file descriptor values for unixy systems and
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync * can be used directly in code specific to those platforms.
ef481e64bafc49f1232767ce12c3fa69a5d5fe50vboxsync */
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsynctypedef enum RTHANDLESTD
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync{
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync /** Invalid standard handle. */
3ecd8008b81f02a04220705ae0033142af363280vboxsync RTHANDLESTD_INVALID = -1,
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync /** The standard input handle. */
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync RTHANDLESTD_INPUT = 0,
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync /** The standard output handle. */
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync RTHANDLESTD_OUTPUT,
9984bae4ef25be8afd95d184308adcfef6e2ec0dvboxsync /** The standard error handle. */
9984bae4ef25be8afd95d184308adcfef6e2ec0dvboxsync RTHANDLESTD_ERROR,
9984bae4ef25be8afd95d184308adcfef6e2ec0dvboxsync /** The typical 32-bit type hack. */
8ddd175fa7cb232e090f3b8934a411c167aadb27vboxsync RTHANDLESTD_32BIT_HACK = 0x7fffffff
8ddd175fa7cb232e090f3b8934a411c167aadb27vboxsync} RTHANDLESTD;
4b02cd4133ae0d8e4732c57274a59358e418349cvboxsync
7aeda6afe5424afa9a456c400e6e7d539a38c716vboxsync
4b02cd4133ae0d8e4732c57274a59358e418349cvboxsync/**
4b02cd4133ae0d8e4732c57274a59358e418349cvboxsync * Error info.
4b02cd4133ae0d8e4732c57274a59358e418349cvboxsync *
1171e4fb031146163c9a5a66bd9cbf3f2a5acdb6vboxsync * See RTErrInfo*.
1171e4fb031146163c9a5a66bd9cbf3f2a5acdb6vboxsync */
1171e4fb031146163c9a5a66bd9cbf3f2a5acdb6vboxsynctypedef struct RTERRINFO
541071eef3db0e3e0e5497bb4b692efee42b1ad0vboxsync{
1171e4fb031146163c9a5a66bd9cbf3f2a5acdb6vboxsync /** Flags, see RTERRINFO_FLAGS_XXX. */
1171e4fb031146163c9a5a66bd9cbf3f2a5acdb6vboxsync uint32_t fFlags;
1171e4fb031146163c9a5a66bd9cbf3f2a5acdb6vboxsync /** The status code. */
1171e4fb031146163c9a5a66bd9cbf3f2a5acdb6vboxsync int32_t rc;
1171e4fb031146163c9a5a66bd9cbf3f2a5acdb6vboxsync /** The size of the message */
541071eef3db0e3e0e5497bb4b692efee42b1ad0vboxsync size_t cbMsg;
1171e4fb031146163c9a5a66bd9cbf3f2a5acdb6vboxsync /** The error buffer. */
1171e4fb031146163c9a5a66bd9cbf3f2a5acdb6vboxsync char *pszMsg;
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync /** Reserved for future use. */
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync void *apvReserved[2];
b0065cd95da56e4208839eb0d3963472c688a8d4vboxsync} RTERRINFO;
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync/** Pointer to an error info structure. */
89818deb947a6b1a2925292bc9ff21e4e1bb60bbvboxsynctypedef RTERRINFO *PRTERRINFO;
01cc79d6798a7ad8b8041ddb2b67fc8b37bf0b37vboxsync/** Pointer to a const error info structure. */
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsynctypedef RTERRINFO const *PCRTERRINFO;
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync/**
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync * Static error info structure, see RTErrInfoInitStatic.
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync */
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsynctypedef struct RTERRINFOSTATIC
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync{
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync /** The core error info. */
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync RTERRINFO Core;
4b02cd4133ae0d8e4732c57274a59358e418349cvboxsync /** The static message buffer. */
4b02cd4133ae0d8e4732c57274a59358e418349cvboxsync char szMsg[3072];
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync} RTERRINFOSTATIC;
b0065cd95da56e4208839eb0d3963472c688a8d4vboxsync/** Pointer to a error info buffer. */
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsynctypedef RTERRINFOSTATIC *PRTERRINFOSTATIC;
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync/** Pointer to a const static error info buffer. */
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsynctypedef RTERRINFOSTATIC const *PCRTERRINFOSTATIC;
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync/**
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync * UUID data type.
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync *
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync * See RTUuid*.
ef481e64bafc49f1232767ce12c3fa69a5d5fe50vboxsync *
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync * @remarks IPRT defines that the first three integers in the @c Gen struct
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync * interpretation are in little endian representation. This is
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync * different to many other UUID implementation, and requires
ef481e64bafc49f1232767ce12c3fa69a5d5fe50vboxsync * conversion if you need to achieve consistent results.
ef481e64bafc49f1232767ce12c3fa69a5d5fe50vboxsync */
9b726ba798aabd1a27863e6f5cfeef1393bd198dvboxsynctypedef union RTUUID
9b726ba798aabd1a27863e6f5cfeef1393bd198dvboxsync{
9b726ba798aabd1a27863e6f5cfeef1393bd198dvboxsync /** 8-bit view. */
9b726ba798aabd1a27863e6f5cfeef1393bd198dvboxsync uint8_t au8[16];
9b726ba798aabd1a27863e6f5cfeef1393bd198dvboxsync /** 16-bit view. */
9b726ba798aabd1a27863e6f5cfeef1393bd198dvboxsync uint16_t au16[8];
9b726ba798aabd1a27863e6f5cfeef1393bd198dvboxsync /** 32-bit view. */
9b726ba798aabd1a27863e6f5cfeef1393bd198dvboxsync uint32_t au32[4];
d9e767721ee71a4803f0de1e24f983be4faa4922vboxsync /** 64-bit view. */
8ddd175fa7cb232e090f3b8934a411c167aadb27vboxsync uint64_t au64[2];
fbf5c218f8bc15f0d765fef4b81e745f4db71b7avboxsync /** The way the UUID is declared by the DCE specification. */
9984bae4ef25be8afd95d184308adcfef6e2ec0dvboxsync struct
8ddd175fa7cb232e090f3b8934a411c167aadb27vboxsync {
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync uint32_t u32TimeLow;
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync uint16_t u16TimeMid;
541071eef3db0e3e0e5497bb4b692efee42b1ad0vboxsync uint16_t u16TimeHiAndVersion;
2b5a4cf3d77ab62dcbd882115b6d497547b20d29vboxsync uint8_t u8ClockSeqHiAndReserved;
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync uint8_t u8ClockSeqLow;
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync uint8_t au8Node[6];
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync } Gen;
b2f6d678ae33b72db5c41199a3e632454f48cfa1vboxsync} RTUUID;
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync/** Pointer to UUID data. */
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsynctypedef RTUUID *PRTUUID;
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync/** Pointer to readonly UUID data. */
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsynctypedef const RTUUID *PCRTUUID;
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync/** UUID string maximum length. */
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync#define RTUUID_STR_LENGTH 37
addc480d0d7650db6323467bbdab6c21836a2928vboxsync
ef481e64bafc49f1232767ce12c3fa69a5d5fe50vboxsync
2b5a4cf3d77ab62dcbd882115b6d497547b20d29vboxsync/** Compression handle. */
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsynctypedef struct RTZIPCOMP *PRTZIPCOMP;
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync/** Decompressor handle. */
ef481e64bafc49f1232767ce12c3fa69a5d5fe50vboxsynctypedef struct RTZIPDECOMP *PRTZIPDECOMP;
3ecd8008b81f02a04220705ae0033142af363280vboxsync
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync
ef481e64bafc49f1232767ce12c3fa69a5d5fe50vboxsync/**
e8f172f2032e21b4be9a8f3df20e8ef689c6a6favboxsync * Unicode Code Point.
e8f172f2032e21b4be9a8f3df20e8ef689c6a6favboxsync */
01cc79d6798a7ad8b8041ddb2b67fc8b37bf0b37vboxsynctypedef uint32_t RTUNICP;
e8f172f2032e21b4be9a8f3df20e8ef689c6a6favboxsync/** Pointer to an Unicode Code Point. */
ef481e64bafc49f1232767ce12c3fa69a5d5fe50vboxsynctypedef RTUNICP *PRTUNICP;
ef481e64bafc49f1232767ce12c3fa69a5d5fe50vboxsync/** Pointer to an Unicode Code Point. */
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsynctypedef const RTUNICP *PCRTUNICP;
2b5a4cf3d77ab62dcbd882115b6d497547b20d29vboxsync/** Max value a RTUNICP type can hold. */
2b5a4cf3d77ab62dcbd882115b6d497547b20d29vboxsync#define RTUNICP_MAX ( ~(RTUNICP)0 )
b0065cd95da56e4208839eb0d3963472c688a8d4vboxsync/** Invalid code point.
b0065cd95da56e4208839eb0d3963472c688a8d4vboxsync * This is returned when encountered invalid encodings or invalid
b0065cd95da56e4208839eb0d3963472c688a8d4vboxsync * unicode code points. */
b0065cd95da56e4208839eb0d3963472c688a8d4vboxsync#define RTUNICP_INVALID ( UINT32_C(0xfffffffe) )
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync
89818deb947a6b1a2925292bc9ff21e4e1bb60bbvboxsync/**
086e613371e0f6d1efc38fbc199fa20291afcd5evboxsync * UTF-16 character.
70aa086e9e9d2f85d2e997d0e69169018a001e54vboxsync * @remark wchar_t is not usable since it's compiler defined.
b0065cd95da56e4208839eb0d3963472c688a8d4vboxsync * @remark When we use the term character we're not talking about unicode code point, but
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync * the basic unit of the string encoding. Thus cwc - count of wide chars - means
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync * count of RTUTF16; cuc - count of unicode chars - means count of RTUNICP;
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync * and cch means count of the typedef 'char', which is assumed to be an octet.
6c7440ab575cca1aa4d97d96b2d898a0d20c8efcvboxsync */
b0065cd95da56e4208839eb0d3963472c688a8d4vboxsynctypedef uint16_t RTUTF16;
70aa086e9e9d2f85d2e997d0e69169018a001e54vboxsync/** Pointer to a UTF-16 character. */
b0065cd95da56e4208839eb0d3963472c688a8d4vboxsynctypedef RTUTF16 *PRTUTF16;
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync/** Pointer to a const UTF-16 character. */
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsynctypedef const RTUTF16 *PCRTUTF16;
ef481e64bafc49f1232767ce12c3fa69a5d5fe50vboxsync
541071eef3db0e3e0e5497bb4b692efee42b1ad0vboxsync
ef481e64bafc49f1232767ce12c3fa69a5d5fe50vboxsync/**
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync * Wait for ever if we have to.
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync */
ef481e64bafc49f1232767ce12c3fa69a5d5fe50vboxsync#define RT_INDEFINITE_WAIT (~0U)
ef481e64bafc49f1232767ce12c3fa69a5d5fe50vboxsync
ef481e64bafc49f1232767ce12c3fa69a5d5fe50vboxsync
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync/**
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync * Generic process callback.
ef481e64bafc49f1232767ce12c3fa69a5d5fe50vboxsync *
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync * @returns VBox status code. Failure will cancel the operation.
ef481e64bafc49f1232767ce12c3fa69a5d5fe50vboxsync * @param uPercentage The percentage of the operation which has been completed.
ef481e64bafc49f1232767ce12c3fa69a5d5fe50vboxsync * @param pvUser The user specified argument.
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync */
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsynctypedef DECLCALLBACK(int) FNRTPROGRESS(unsigned uPrecentage, void *pvUser);
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync/** Pointer to a generic progress callback function, FNRTPROCESS(). */
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsynctypedef FNRTPROGRESS *PFNRTPROGRESS;
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync
ef481e64bafc49f1232767ce12c3fa69a5d5fe50vboxsync
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync/**
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync * A point in a two dimentional coordinate system.
ef481e64bafc49f1232767ce12c3fa69a5d5fe50vboxsync */
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsynctypedef struct RTPOINT
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync{
2b5a4cf3d77ab62dcbd882115b6d497547b20d29vboxsync /** X coordinate. */
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync int32_t x;
541071eef3db0e3e0e5497bb4b692efee42b1ad0vboxsync /** Y coordinate. */
d41220dff1068effe66bb6a11f444811ba58de40vboxsync int32_t y;
d41220dff1068effe66bb6a11f444811ba58de40vboxsync} RTPOINT;
d41220dff1068effe66bb6a11f444811ba58de40vboxsync/** Pointer to a point. */
d41220dff1068effe66bb6a11f444811ba58de40vboxsynctypedef RTPOINT *PRTPOINT;
b2f6d678ae33b72db5c41199a3e632454f48cfa1vboxsync/** Pointer to a const point. */
d41220dff1068effe66bb6a11f444811ba58de40vboxsynctypedef const RTPOINT *PCRTPOINT;
d41220dff1068effe66bb6a11f444811ba58de40vboxsync
d41220dff1068effe66bb6a11f444811ba58de40vboxsync
d41220dff1068effe66bb6a11f444811ba58de40vboxsync/**
90466ec66c4fa6a8cd62f01fbf141b51189d33cbvboxsync * Rectangle data type, double point.
addc480d0d7650db6323467bbdab6c21836a2928vboxsync */
d41220dff1068effe66bb6a11f444811ba58de40vboxsynctypedef struct RTRECT
d41220dff1068effe66bb6a11f444811ba58de40vboxsync{
d41220dff1068effe66bb6a11f444811ba58de40vboxsync /** left X coordinate. */
a5c11842b92303b7b5d0086ee5011a969e321b50vboxsync int32_t xLeft;
d184d98f6e75700295aaa08ff14d0478dd6cc94avboxsync /** top Y coordinate. */
ef481e64bafc49f1232767ce12c3fa69a5d5fe50vboxsync int32_t yTop;
d41220dff1068effe66bb6a11f444811ba58de40vboxsync /** right X coordinate. (exclusive) */
ef481e64bafc49f1232767ce12c3fa69a5d5fe50vboxsync int32_t xRight;
d41220dff1068effe66bb6a11f444811ba58de40vboxsync /** bottom Y coordinate. (exclusive) */
d41220dff1068effe66bb6a11f444811ba58de40vboxsync int32_t yBottom;
ef481e64bafc49f1232767ce12c3fa69a5d5fe50vboxsync} RTRECT;
d41220dff1068effe66bb6a11f444811ba58de40vboxsync/** Pointer to a double point rectangle. */
d41220dff1068effe66bb6a11f444811ba58de40vboxsynctypedef RTRECT *PRTRECT;
d41220dff1068effe66bb6a11f444811ba58de40vboxsync/** Pointer to a const double point rectangle. */
d41220dff1068effe66bb6a11f444811ba58de40vboxsynctypedef const RTRECT *PCRTRECT;
d41220dff1068effe66bb6a11f444811ba58de40vboxsync
d41220dff1068effe66bb6a11f444811ba58de40vboxsync
d41220dff1068effe66bb6a11f444811ba58de40vboxsync/**
d41220dff1068effe66bb6a11f444811ba58de40vboxsync * Rectangle data type, point + size.
d41220dff1068effe66bb6a11f444811ba58de40vboxsync */
541071eef3db0e3e0e5497bb4b692efee42b1ad0vboxsynctypedef struct RTRECT2
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync{
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync /** X coordinate.
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync * Unless stated otherwise, this is the top left corner. */
b2f6d678ae33b72db5c41199a3e632454f48cfa1vboxsync int32_t x;
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync /** Y coordinate.
01cc79d6798a7ad8b8041ddb2b67fc8b37bf0b37vboxsync * Unless stated otherwise, this is the top left corner. */
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync int32_t y;
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync /** The width.
addc480d0d7650db6323467bbdab6c21836a2928vboxsync * Unless stated otherwise, this is to the right of (x,y) and will not
ef481e64bafc49f1232767ce12c3fa69a5d5fe50vboxsync * be a negative number. */
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync int32_t cx;
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync /** The height.
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync * Unless stated otherwise, this is down from (x,y) and will not be a
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync * negative number. */
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync int32_t cy;
ef481e64bafc49f1232767ce12c3fa69a5d5fe50vboxsync} RTRECT2;
01cc79d6798a7ad8b8041ddb2b67fc8b37bf0b37vboxsync/** Pointer to a point + size rectangle. */
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsynctypedef RTRECT2 *PRTRECT2;
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync/** Pointer to a const point + size rectangle. */
ef481e64bafc49f1232767ce12c3fa69a5d5fe50vboxsynctypedef const RTRECT2 *PCRTRECT2;
ef481e64bafc49f1232767ce12c3fa69a5d5fe50vboxsync
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync/**
ef481e64bafc49f1232767ce12c3fa69a5d5fe50vboxsync * The size of a rectangle.
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync */
ef481e64bafc49f1232767ce12c3fa69a5d5fe50vboxsynctypedef struct RTRECTSIZE
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync{
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync /** The width (along the x-axis). */
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync uint32_t cx;
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync /** The height (along the y-axis). */
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync uint32_t cy;
ef481e64bafc49f1232767ce12c3fa69a5d5fe50vboxsync} RTRECTSIZE;
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync/** Pointer to a rectangle size. */
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsynctypedef RTRECTSIZE *PRTRECTSIZE;
ef481e64bafc49f1232767ce12c3fa69a5d5fe50vboxsync/** Pointer to a const rectangle size. */
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsynctypedef const RTRECTSIZE *PCRTRECTSIZE;
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync
dea1368099e5337861dd52906d4c683c447a33c4vboxsync
541071eef3db0e3e0e5497bb4b692efee42b1ad0vboxsync/**
ef481e64bafc49f1232767ce12c3fa69a5d5fe50vboxsync * Ethernet MAC address.
ef481e64bafc49f1232767ce12c3fa69a5d5fe50vboxsync *
ef481e64bafc49f1232767ce12c3fa69a5d5fe50vboxsync * The first 24 bits make up the Organisationally Unique Identifier (OUI),
b2f6d678ae33b72db5c41199a3e632454f48cfa1vboxsync * where the first bit (little endian) indicates multicast (set) / unicast,
ef481e64bafc49f1232767ce12c3fa69a5d5fe50vboxsync * and the second bit indicates locally (set) / global administered. If all
ef481e64bafc49f1232767ce12c3fa69a5d5fe50vboxsync * bits are set, it's a broadcast.
ef481e64bafc49f1232767ce12c3fa69a5d5fe50vboxsync */
ef481e64bafc49f1232767ce12c3fa69a5d5fe50vboxsynctypedef union RTMAC
ef481e64bafc49f1232767ce12c3fa69a5d5fe50vboxsync{
addc480d0d7650db6323467bbdab6c21836a2928vboxsync /** @todo add a bitfield view of this stuff. */
ef481e64bafc49f1232767ce12c3fa69a5d5fe50vboxsync /** 8-bit view. */
ef481e64bafc49f1232767ce12c3fa69a5d5fe50vboxsync uint8_t au8[6];
ef481e64bafc49f1232767ce12c3fa69a5d5fe50vboxsync /** 16-bit view. */
ef481e64bafc49f1232767ce12c3fa69a5d5fe50vboxsync uint16_t au16[3];
ef481e64bafc49f1232767ce12c3fa69a5d5fe50vboxsync} RTMAC;
ef481e64bafc49f1232767ce12c3fa69a5d5fe50vboxsync/** Pointer to a MAC address. */
ef481e64bafc49f1232767ce12c3fa69a5d5fe50vboxsynctypedef RTMAC *PRTMAC;
ef481e64bafc49f1232767ce12c3fa69a5d5fe50vboxsync/** Pointer to a readonly MAC address. */
ef481e64bafc49f1232767ce12c3fa69a5d5fe50vboxsynctypedef const RTMAC *PCRTMAC;
ef481e64bafc49f1232767ce12c3fa69a5d5fe50vboxsync
ef481e64bafc49f1232767ce12c3fa69a5d5fe50vboxsync
541071eef3db0e3e0e5497bb4b692efee42b1ad0vboxsync/** Pointer to a lock validator record.
dea1368099e5337861dd52906d4c683c447a33c4vboxsync * The structure definition is found in iprt/lockvalidator.h. */
dea1368099e5337861dd52906d4c683c447a33c4vboxsynctypedef struct RTLOCKVALRECEXCL *PRTLOCKVALRECEXCL;
dea1368099e5337861dd52906d4c683c447a33c4vboxsync/** Pointer to a lock validator source poisition.
b2f6d678ae33b72db5c41199a3e632454f48cfa1vboxsync * The structure definition is found in iprt/lockvalidator.h. */
dea1368099e5337861dd52906d4c683c447a33c4vboxsynctypedef struct RTLOCKVALSRCPOS *PRTLOCKVALSRCPOS;
dea1368099e5337861dd52906d4c683c447a33c4vboxsync/** Pointer to a const lock validator source poisition.
dea1368099e5337861dd52906d4c683c447a33c4vboxsync * The structure definition is found in iprt/lockvalidator.h. */
dea1368099e5337861dd52906d4c683c447a33c4vboxsynctypedef struct RTLOCKVALSRCPOS const *PCRTLOCKVALSRCPOS;
dea1368099e5337861dd52906d4c683c447a33c4vboxsync
addc480d0d7650db6323467bbdab6c21836a2928vboxsync/** @name Special sub-class values.
ef481e64bafc49f1232767ce12c3fa69a5d5fe50vboxsync * The range 16..UINT32_MAX is available to the user, the range 0..15 is
ef481e64bafc49f1232767ce12c3fa69a5d5fe50vboxsync * reserved for the lock validator. In the user range the locks can only be
dea1368099e5337861dd52906d4c683c447a33c4vboxsync * taking in ascending order.
dea1368099e5337861dd52906d4c683c447a33c4vboxsync * @{ */
dea1368099e5337861dd52906d4c683c447a33c4vboxsync/** Invalid value. */
dea1368099e5337861dd52906d4c683c447a33c4vboxsync#define RTLOCKVAL_SUB_CLASS_INVALID UINT32_C(0)
a5c11842b92303b7b5d0086ee5011a969e321b50vboxsync/** Not allowed to be taken with any other locks in the same class.
dea1368099e5337861dd52906d4c683c447a33c4vboxsync * This is the recommended value. */
ef481e64bafc49f1232767ce12c3fa69a5d5fe50vboxsync#define RTLOCKVAL_SUB_CLASS_NONE UINT32_C(1)
dea1368099e5337861dd52906d4c683c447a33c4vboxsync/** Any order is allowed within the class. */
ef481e64bafc49f1232767ce12c3fa69a5d5fe50vboxsync#define RTLOCKVAL_SUB_CLASS_ANY UINT32_C(2)
dea1368099e5337861dd52906d4c683c447a33c4vboxsync/** The first user value. */
ef481e64bafc49f1232767ce12c3fa69a5d5fe50vboxsync#define RTLOCKVAL_SUB_CLASS_USER UINT32_C(16)
dea1368099e5337861dd52906d4c683c447a33c4vboxsync/** @} */
dea1368099e5337861dd52906d4c683c447a33c4vboxsync
dea1368099e5337861dd52906d4c683c447a33c4vboxsync
dea1368099e5337861dd52906d4c683c447a33c4vboxsync/**
dea1368099e5337861dd52906d4c683c447a33c4vboxsync * Process exit codes.
dea1368099e5337861dd52906d4c683c447a33c4vboxsync */
dea1368099e5337861dd52906d4c683c447a33c4vboxsynctypedef enum RTEXITCODE
dea1368099e5337861dd52906d4c683c447a33c4vboxsync{
dea1368099e5337861dd52906d4c683c447a33c4vboxsync /** Success. */
dea1368099e5337861dd52906d4c683c447a33c4vboxsync RTEXITCODE_SUCCESS = 0,
ef481e64bafc49f1232767ce12c3fa69a5d5fe50vboxsync /** General failure. */
dea1368099e5337861dd52906d4c683c447a33c4vboxsync RTEXITCODE_FAILURE = 1,
dea1368099e5337861dd52906d4c683c447a33c4vboxsync /** Invalid arguments. */
ef481e64bafc49f1232767ce12c3fa69a5d5fe50vboxsync RTEXITCODE_SYNTAX = 2,
ef481e64bafc49f1232767ce12c3fa69a5d5fe50vboxsync /** Initialization failure (usually IPRT, but could be used for other
dea1368099e5337861dd52906d4c683c447a33c4vboxsync * components as well). */
dea1368099e5337861dd52906d4c683c447a33c4vboxsync RTEXITCODE_INIT = 3,
ef481e64bafc49f1232767ce12c3fa69a5d5fe50vboxsync /** Test skipped. */
dea1368099e5337861dd52906d4c683c447a33c4vboxsync RTEXITCODE_SKIPPED = 4,
ef481e64bafc49f1232767ce12c3fa69a5d5fe50vboxsync /** The end of valid exit codes. */
dea1368099e5337861dd52906d4c683c447a33c4vboxsync RTEXITCODE_END,
dea1368099e5337861dd52906d4c683c447a33c4vboxsync /** The usual 32-bit type hack. */
dea1368099e5337861dd52906d4c683c447a33c4vboxsync RTEXITCODE_32BIT_HACK = 0x7fffffff
dea1368099e5337861dd52906d4c683c447a33c4vboxsync} RTEXITCODE;
dea1368099e5337861dd52906d4c683c447a33c4vboxsync
ef481e64bafc49f1232767ce12c3fa69a5d5fe50vboxsync
dea1368099e5337861dd52906d4c683c447a33c4vboxsync#ifdef __cplusplus
dea1368099e5337861dd52906d4c683c447a33c4vboxsync/**
dea1368099e5337861dd52906d4c683c447a33c4vboxsync * Strict type validation helper class.
dea1368099e5337861dd52906d4c683c447a33c4vboxsync *
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync * See RTErrStrictType and RT_SUCCESS_NP.
3cac8f8c6923a3a89ecfccda5e89ad75f48658e0vboxsync */
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsyncclass RTErrStrictType2
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync{
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsyncprotected:
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync /** The status code. */
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync int32_t m_rc;
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsyncpublic:
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync /**
b1c3cdef473df2fbc621d5da81acc82dbfb8a11avboxsync * Constructor.
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync * @param rc IPRT style status code.
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync */
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync RTErrStrictType2(int32_t rc) : m_rc(rc)
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync {
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync }
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync /**
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync * Get the status code.
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync * @returns IPRT style status code.
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync */
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync int32_t getValue() const
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync {
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync return m_rc;
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync }
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync};
b1c3cdef473df2fbc621d5da81acc82dbfb8a11avboxsync#endif /* __cplusplus */
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync/** @} */
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync#endif
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync