types.h revision c1ec0862a43a7fbb25c5e1f3243f67c1f787d4eb
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** @file
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync * InnoTek Portable Runtime - Types.
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/*
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync * Copyright (C) 2006 InnoTek Systemberatung GmbH
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync *
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync * This file is part of VirtualBox Open Source Edition (OSE), as
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync * available from http://www.virtualbox.org. This file is free software;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync * you can redistribute it and/or modify it under the terms of the GNU
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync * General Public License as published by the Free Software Foundation,
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync * in version 2 as it comes in the "COPYING" file of the VirtualBox OSE
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync * distribution. VirtualBox OSE is distributed in the hope that it will
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync * be useful, but WITHOUT ANY WARRANTY of any kind.
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync *
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync * If you received this file as part of a commercial VirtualBox
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync * distribution, then only the terms of your commercial VirtualBox
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync * license agreement apply instead of the previous paragraph.
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#ifndef __iprt_types_h__
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#define __iprt_types_h__
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#include <iprt/cdefs.h>
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#include <iprt/stdint.h>
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/*
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync * Include standard C types.
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#ifndef IPRT_NO_CRT
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync# if !defined(__DARWIN__) || !defined(KERNEL) /* Klugde for the darwin kernel. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync# include <stddef.h>
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync# else /* DARWIN && KERNEL */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync# ifndef _PTRDIFF_T
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync# define _PTRDIFF_T
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync typedef __darwin_ptrdiff_t ptrdiff_t;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync# endif
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync# endif /* DARWIN && KERNEL */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync# if defined(__LINUX__) && defined(__KERNEL__) /* Klugde for the linux kernel. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync# ifndef bool /* Linux 2.6.19 C++ nightmare */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync# define bool bool_type
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync# define true true_type
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync# define false false_type
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync# define _Bool int
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync# define bool_type_iprt_types_h__
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync# endif
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync# include <linux/types.h>
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync# ifdef bool_type_iprt_types_h__
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync# undef bool
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync# undef true
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync# undef false
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync# undef _Bool
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync# undef bool_type_iprt_types_h__
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync# endif
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync# else
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync# include <sys/types.h>
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync# endif
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/* Define any types missing from sys/types.h on windows. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync# ifdef _MSC_VER
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync# undef ssize_t
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync typedef intptr_t ssize_t;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync# endif
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#else /* no crt */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync# if defined(__GNUC__)
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync# ifndef __OS2__
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync# include <stddef.h>
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync# endif
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync# ifndef _SIZE_T_DECLARED
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync# define _SIZE_T_DECLARED
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync# if defined(__X86__)
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync typedef unsigned int size_t;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync# else
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync typedef uintptr_t size_t;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync# endif
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync# endif
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync# ifndef _SSIZE_T_DECLARED
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync# define _SSIZE_T_DECLARED
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync# if defined(__X86__)
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync typedef int ssize_t;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync# else
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync typedef intptr_t ssize_t;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync# endif
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync# endif
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync# else /* !__GNUC__ */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync typedef uintptr_t size_t;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync typedef intptr_t ssize_t;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync# endif /* !__GNUC__ */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#endif /* no crt */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** @defgroup grp_rt_types InnoTek Portable Runtime Base Types
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync * @{
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/* define wchar_t, we don't wanna include all the wcsstuff to get this. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#ifdef _MSC_VER
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync# ifndef _WCHAR_T_DEFINED
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync typedef unsigned short wchar_t;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync# define _WCHAR_T_DEFINED
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync# endif
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#endif
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#ifdef __GNUC__
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** @todo wchar_t on GNUC */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#endif
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/*
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync * C doesn't have bool.
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#ifndef __cplusplus
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef unsigned char bool;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync# ifndef true
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync# define true (1)
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync# endif
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync# ifndef false
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync# define false (0)
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync# endif
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#endif
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/**
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync * 128-bit unsigned integer.
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#if defined(__GNUC__) && defined(__amd64__)
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef __uint128_t uint128_t;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#else
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef struct uint128_s
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync{
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync uint64_t Lo;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync uint64_t Hi;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync} uint128_t;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#endif
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/**
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync * 128-bit signed integer.
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#if defined(__GNUC__) && defined(__amd64__)
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef __int128_t int128_t;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#else
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef struct int128_s
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync{
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync uint64_t lo;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync int64_t hi;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync} int128_t;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#endif
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/**
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync * 16-bit unsigned interger union.
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef union RTUINT16U
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync{
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync /** natural view. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync uint16_t u;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync /** 16-bit view. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync uint16_t au16[1];
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync /** 8-bit view. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync uint8_t au8[4];
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync /** 16-bit hi/lo view. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync struct
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync {
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync uint16_t Lo;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync uint16_t Hi;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync } s;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync} RTUINT16U;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Pointer to a 16-bit unsigned interger union. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef RTUINT16U *PRTUINT16U;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Pointer to a const 32-bit unsigned interger union. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef const RTUINT16U *PCRTUINT16U;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/**
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync * 32-bit unsigned interger union.
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef union RTUINT32U
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync{
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync /** natural view. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync uint32_t u;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync /** Hi/Low view. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync struct
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync {
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync uint16_t Lo;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync uint16_t Hi;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync } s;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync /** Word view. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync struct
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync {
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync uint16_t w0;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync uint16_t w1;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync } Words;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync /** 32-bit view. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync uint32_t au32[1];
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync /** 16-bit view. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync uint16_t au16[2];
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync /** 8-bit view. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync uint8_t au8[4];
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync} RTUINT32U;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Pointer to a 32-bit unsigned interger union. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef RTUINT32U *PRTUINT32U;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Pointer to a const 32-bit unsigned interger union. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef const RTUINT32U *PCRTUINT32U;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/**
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync * 64-bit unsigned interger union.
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef union RTUINT64U
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync{
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync /** Natural view. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync uint64_t u;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync /** Hi/Low view. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync struct
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync {
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync uint32_t Lo;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync uint32_t Hi;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync } s;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync /** Double-Word view. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync struct
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync {
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync uint32_t dw0;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync uint32_t dw1;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync } DWords;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync /** Word view. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync struct
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync {
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync uint16_t w0;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync uint16_t w1;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync uint16_t w2;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync uint16_t w3;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync } Words;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync /** 64-bit view. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync uint64_t au64[1];
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync /** 32-bit view. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync uint32_t au32[2];
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync /** 16-bit view. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync uint16_t au16[4];
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync /** 8-bit view. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync uint8_t au8[8];
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync} RTUINT64U;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Pointer to a 64-bit unsigned interger union. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef RTUINT64U *PRTUINT64U;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Pointer to a const 64-bit unsigned interger union. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef const RTUINT64U *PCRTUINT64U;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/**
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync * 128-bit unsigned interger union.
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef union RTUINT128U
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync{
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync /** Natural view.
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync * WARNING! This member depends on compiler supporing 128-bit stuff. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync uint128_t u;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync /** Hi/Low view. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync struct
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync {
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync uint64_t Lo;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync uint64_t Hi;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync } s;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync /** Quad-Word view. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync struct
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync {
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync uint64_t qw0;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync uint64_t qw1;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync } QWords;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync /** Double-Word view. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync struct
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync {
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync uint32_t dw0;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync uint32_t dw1;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync uint32_t dw2;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync uint32_t dw3;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync } DWords;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync /** Word view. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync struct
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync {
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync uint16_t w0;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync uint16_t w1;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync uint16_t w2;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync uint16_t w3;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync uint16_t w4;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync uint16_t w5;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync uint16_t w6;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync uint16_t w7;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync } Words;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync /** 64-bit view. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync uint64_t au64[2];
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync /** 32-bit view. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync uint32_t au32[4];
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync /** 16-bit view. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync uint16_t au16[8];
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync /** 8-bit view. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync uint8_t au8[16];
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync} RTUINT128U;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Pointer to a 64-bit unsigned interger union. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef RTUINT128U *PRTUINT128U;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Pointer to a const 64-bit unsigned interger union. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef const RTUINT128U *PCRTUINT128U;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Generic function type.
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync * @see PFNRT
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef DECLCALLBACK(void) FNRT(void);
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Generic function pointer.
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync * With -pedantic, gcc-4 complains when casting a function to a data object, for example
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync *
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync * @code
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync * void foo(void)
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync * {
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync * }
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync *
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync * void *bar = (void *)foo;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync * @endcode
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync *
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync * The compiler would warn with "ISO C++ forbids casting between pointer-to-function and
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync * pointer-to-object". The purpose of this warning is not to bother the programmer but to
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync * point out that he is probably doing something dangerous, assigning a pointer to executable
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync * code to a data object.
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef FNRT *PFNRT;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** @defgroup grp_rt_types_both Common Guest and Host Context Basic Types
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync * @ingroup grp_rt_types
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync * @{
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync */
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync/** @def ARCH_BITS
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync * Defines the bit count of the current context.
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync */
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync#ifndef ARCH_BITS
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync# if defined(__x86_64__) || defined(__amd64__) /** @todo MSC */ /** @todo get this right with gcc32. */
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync# define ARCH_BITS 64
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync# else
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync# define ARCH_BITS 32
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync# endif
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync#endif
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync/** @def HC_ARCH_BITS
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync * Defines the host architechture bit count.
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync */
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync#ifndef HC_ARCH_BITS
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync# ifndef IN_GC
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync# define HC_ARCH_BITS ARCH_BITS
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync# else
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync# define HC_ARCH_BITS 32
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync# endif
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#endif
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** @def R3_ARCH_BITS
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync * Defines the host ring-3 architechture bit count.
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#ifndef R3_ARCH_BITS
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync# ifdef IN_RING3
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync# define R3_ARCH_BITS ARCH_BITS
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync# else
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync# define R3_ARCH_BITS HC_ARCH_BITS
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync# endif
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#endif
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** @def R0_ARCH_BITS
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync * Defines the host ring-0 architechture bit count.
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#ifndef R0_ARCH_BITS
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync# ifdef IN_RING0
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync# define R0_ARCH_BITS ARCH_BITS
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync# else
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync# define R0_ARCH_BITS HC_ARCH_BITS
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync# endif
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#endif
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** @def GC_ARCH_BITS
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync * Defines the guest architechture bit count.
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#ifndef GC_ARCH_BITS
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync# ifdef IN_GC
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync# define GC_ARCH_BITS ARCH_BITS
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync# else
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync# define GC_ARCH_BITS 32
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync# endif
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#endif
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Signed integer which can contain both GC and HC pointers. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#if (HC_ARCH_BITS == 32 && GC_ARCH_BITS == 32)
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef int32_t RTINTPTR;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#elif (HC_ARCH_BITS == 64 || GC_ARCH_BITS == 64)
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef int64_t RTINTPTR;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#else
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync# error Unsupported HC_ARCH_BITS and/or GC_ARCH_BITS values.
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#endif
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Pointer to signed integer which can contain both GC and HC pointers. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef RTINTPTR *PRTINTPTR;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Pointer const to signed integer which can contain both GC and HC pointers. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef const RTINTPTR *PCRTINTPTR;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Unsigned integer which can contain both GC and HC pointers. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#if (HC_ARCH_BITS == 32 && GC_ARCH_BITS == 32)
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef uint32_t RTUINTPTR;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#elif (HC_ARCH_BITS == 64 || GC_ARCH_BITS == 64)
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef uint64_t RTUINTPTR;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#else
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync# error Unsupported HC_ARCH_BITS and/or GC_ARCH_BITS values.
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#endif
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Pointer to unsigned integer which can contain both GC and HC pointers. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef RTUINTPTR *PRTUINTPTR;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Pointer const to unsigned integer which can contain both GC and HC pointers. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef const RTUINTPTR *PCRTUINTPTR;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Signed integer. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef int32_t RTINT;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Pointer to signed integer. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef RTINT *PRTINT;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Pointer to const signed integer. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef const RTINT *PCRTINT;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Unsigned integer. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef uint32_t RTUINT;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Pointer to unsigned integer. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef RTUINT *PRTUINT;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Pointer to const unsigned integer. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef const RTUINT *PCRTUINT;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** A file offset / size (off_t). */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef int64_t RTFOFF;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Pointer to a file offset / size. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef RTFOFF *PRTFOFF;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** File mode (see iprt/fs.h). */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef uint32_t RTFMODE;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Pointer to file mode. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef RTFMODE *PRTFMODE;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Device unix number. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef uint32_t RTDEV;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Pointer to a device unix number. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef RTDEV *PRTDEV;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** i-node number. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef uint64_t RTINODE;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Pointer to a i-node number. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef RTINODE *PRTINODE;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** User id. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef uint32_t RTUID;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Pointer to a user id. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef RTUID *PRTUID;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** NIL user id.
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync * @todo check this for portability! */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#define NIL_RTUID (~(RTUID)0);
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Group id. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef uint32_t RTGID;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Pointer to a group id. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef RTGID *PRTGID;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** NIL group id.
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync * @todo check this for portability! */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#define NIL_RTGID (~(RTGID)0);
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** I/O Port. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef uint16_t RTIOPORT;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Pointer to I/O Port. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef RTIOPORT *PRTIOPORT;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Pointer to const I/O Port. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef const RTIOPORT *PCRTIOPORT;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Selector. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef uint16_t RTSEL;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Pointer to selector. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef RTSEL *PRTSEL;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Pointer to const selector. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef const RTSEL *PCRTSEL;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Far 16-bit pointer. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#pragma pack(1)
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef struct RTFAR16
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync{
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync uint16_t off;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync RTSEL sel;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync} RTFAR16;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#pragma pack()
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Pointer to Far 16-bit pointer. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef RTFAR16 *PRTFAR16;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Pointer to const Far 16-bit pointer. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef const RTFAR16 *PCRTFAR16;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Far 32-bit pointer. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#pragma pack(1)
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef struct RTFAR32
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync{
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync uint32_t off;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync RTSEL sel;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync} RTFAR32;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#pragma pack()
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Pointer to Far 32-bit pointer. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef RTFAR32 *PRTFAR32;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Pointer to const Far 32-bit pointer. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef const RTFAR32 *PCRTFAR32;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Far 64-bit pointer. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#pragma pack(1)
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef struct RTFAR64
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync{
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync uint64_t off;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync RTSEL sel;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync} RTFAR64;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#pragma pack()
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Pointer to Far 64-bit pointer. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef RTFAR64 *PRTFAR64;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Pointer to const Far 64-bit pointer. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef const RTFAR64 *PCRTFAR64;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** @} */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** @defgroup grp_rt_types_hc Host Context Basic Types
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync * @ingroup grp_rt_types
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync * @{
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** HC Natural signed integer. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef int32_t RTHCINT;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Pointer to HC Natural signed integer. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef RTHCINT *PRTHCINT;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Pointer to const HC Natural signed integer. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef const RTHCINT *PCRTHCINT;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** HC Natural unsigned integer. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef uint32_t RTHCUINT;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Pointer to HC Natural unsigned integer. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef RTHCUINT *PRTHCUINT;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Pointer to const HC Natural unsigned integer. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef const RTHCUINT *PCRTHCUINT;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Signed integer which can contain a HC pointer. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#if HC_ARCH_BITS == 32
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef int32_t RTHCINTPTR;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#elif HC_ARCH_BITS == 64
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef int64_t RTHCINTPTR;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#else
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync# error Unsupported HC_ARCH_BITS value.
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#endif
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Pointer to signed interger which can contain a HC pointer. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef RTHCINTPTR *PRTHCINTPTR;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Pointer to const signed interger which can contain a HC pointer. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef const RTHCINTPTR *PCRTHCINTPTR;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Signed integer which can contain a HC ring-3 pointer. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#if R3_ARCH_BITS == 32
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef int32_t RTR3INTPTR;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#elif R3_ARCH_BITS == 64
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef int64_t RTR3INTPTR;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#else
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync# error Unsupported R3_ARCH_BITS value.
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#endif
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Pointer to signed interger which can contain a HC ring-3 pointer. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef RTR3INTPTR *PRTR3INTPTR;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Pointer to const signed interger which can contain a HC ring-3 pointer. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef const RTR3INTPTR *PCRTR3INTPTR;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Signed integer which can contain a HC ring-0 pointer. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#if R0_ARCH_BITS == 32
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef int32_t RTR0INTPTR;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#elif R0_ARCH_BITS == 64
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef int64_t RTR0INTPTR;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#else
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync# error Unsupported R0_ARCH_BITS value.
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#endif
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Pointer to signed interger which can contain a HC ring-0 pointer. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef RTR0INTPTR *PRTR0INTPTR;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Pointer to const signed interger which can contain a HC ring-0 pointer. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef const RTR0INTPTR *PCRTR0INTPTR;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Unsigned integer which can contain a HC pointer. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#if HC_ARCH_BITS == 32
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef uint32_t RTHCUINTPTR;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#elif HC_ARCH_BITS == 64
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef uint64_t RTHCUINTPTR;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#else
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync# error Unsupported HC_ARCH_BITS value.
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#endif
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Pointer to unsigned interger which can contain a HC pointer. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef RTHCUINTPTR *PRTHCUINTPTR;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Pointer to unsigned interger which can contain a HC pointer. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef const RTHCUINTPTR *PCRTHCUINTPTR;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Unsigned integer which can contain a HC ring-3 pointer. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#if R3_ARCH_BITS == 32
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef uint32_t RTR3UINTPTR;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#elif R3_ARCH_BITS == 64
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef uint64_t RTR3UINTPTR;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#else
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync# error Unsupported R3_ARCH_BITS value.
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#endif
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Pointer to unsigned interger which can contain a HC ring-3 pointer. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef RTR3UINTPTR *PRTR3UINTPTR;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Pointer to unsigned interger which can contain a HC ring-3 pointer. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef const RTR3UINTPTR *PCRTR3UINTPTR;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Unsigned integer which can contain a HC ring-0 pointer. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#if R0_ARCH_BITS == 32
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef uint32_t RTR0UINTPTR;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#elif R0_ARCH_BITS == 64
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef uint64_t RTR0UINTPTR;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#else
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync# error Unsupported R0_ARCH_BITS value.
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#endif
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Pointer to unsigned interger which can contain a HC ring-0 pointer. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef RTR0UINTPTR *PRTR0UINTPTR;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Pointer to unsigned interger which can contain a HC ring-0 pointer. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef const RTR0UINTPTR *PCRTR0UINTPTR;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Host Physical Memory Address.
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync * @todo This should be configurable at compile time too...
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef uint64_t RTHCPHYS;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Pointer to Host Physical Memory Address. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef RTHCPHYS *PRTHCPHYS;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Pointer to const Host Physical Memory Address. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef const RTHCPHYS *PCRTHCPHYS;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** @def NIL_RTHCPHYS
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync * NIL HC Physical Address.
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync * NIL_RTHCPHYS is used to signal an invalid physical address, similar
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync * to the NULL pointer.
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync */
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync#define NIL_RTHCPHYS ((RTHCPHYS)~0U) /** @todo change this to (~(VBOXHCPHYS)0) */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** HC pointer. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#ifndef IN_GC
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef void * RTHCPTR;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#else
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef RTHCUINTPTR RTHCPTR;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#endif
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Pointer to HC pointer. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef RTHCPTR *PRTHCPTR;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Pointer to const HC pointer. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef const RTHCPTR *PCRTHCPTR;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** @def NIL_RTHCPTR
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync * NIL HC pointer.
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#define NIL_RTHCPTR ((RTHCPTR)0)
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** HC ring-3 pointer. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#ifdef IN_RING3
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef void * RTR3PTR;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#else
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef RTR3UINTPTR RTR3PTR;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#endif
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Pointer to HC ring-3 pointer. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef RTR3PTR *PRTR3PTR;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Pointer to const HC ring-3 pointer. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef const RTR3PTR *PCRTR3PTR;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** @def NIL_RTR3PTR
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync * NIL HC ring-3 pointer.
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#define NIL_RTR3PTR ((RTR3PTR)0)
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** HC ring-0 pointer. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#ifdef IN_RING0
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef void * RTR0PTR;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#else
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef RTR0UINTPTR RTR0PTR;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#endif
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Pointer to HC ring-0 pointer. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef RTR0PTR *PRTR0PTR;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Pointer to const HC ring-0 pointer. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef const RTR0PTR *PCRTR0PTR;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** @def NIL_RTR0PTR
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync * NIL HC ring-0 pointer.
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#define NIL_RTR0PTR ((RTR0PTR)0)
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Unsigned integer register in the host context. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#if HC_ARCH_BITS == 32
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef uint32_t RTHCUINTREG;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#elif HC_ARCH_BITS == 64
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsynctypedef uint64_t RTHCUINTREG;
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync#else
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync# error "Unsupported HC_ARCH_BITS!"
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#endif
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Pointer to an unsigned integer register in the host context. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef RTHCUINTREG *PRTHCUINTREG;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Pointer to a const unsigned integer register in the host context. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef const RTHCUINTREG *PCRTHCUINTREG;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Unsigned integer register in the host ring-3 context. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#if R3_ARCH_BITS == 32
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef uint32_t RTR3UINTREG;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#elif R3_ARCH_BITS == 64
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef uint64_t RTR3UINTREG;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#else
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync# error "Unsupported R3_ARCH_BITS!"
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#endif
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Pointer to an unsigned integer register in the host ring-3 context. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef RTR3UINTREG *PRTR3UINTREG;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Pointer to a const unsigned integer register in the host ring-3 context. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef const RTR3UINTREG *PCRTR3UINTREG;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Unsigned integer register in the host ring-3 context. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#if R0_ARCH_BITS == 32
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef uint32_t RTR0UINTREG;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#elif R0_ARCH_BITS == 64
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef uint64_t RTR0UINTREG;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#else
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync# error "Unsupported R3_ARCH_BITS!"
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#endif
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Pointer to an unsigned integer register in the host ring-3 context. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef RTR0UINTREG *PRTR0UINTREG;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Pointer to a const unsigned integer register in the host ring-3 context. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef const RTR0UINTREG *PCRTR0UINTREG;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** @} */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** @defgroup grp_rt_types_gc Guest Context Basic Types
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync * @ingroup grp_rt_types
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync * @{
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Natural signed integer in the GC. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef int32_t RTGCINT;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Pointer to natural signed interger in GC. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef RTGCINT *PRTGCINT;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Pointer to const natural signed interger in GC. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef const RTGCINT *PCRTGCINT;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Natural signed uninteger in the GC. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef uint32_t RTGCUINT;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Pointer to natural unsigned interger in GC. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef RTGCUINT *PRTGCUINT;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Pointer to const natural unsigned interger in GC. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef const RTGCUINT *PCRTGCUINT;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Signed integer which can contain a GC pointer. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#if GC_ARCH_BITS == 32
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef int32_t RTGCINTPTR;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#elif GC_ARCH_BITS == 64
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef int64_t RTGCINTPTR;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#else
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync# error Unsupported GC_ARCH_BITS value.
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#endif
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Pointer to signed interger which can contain a GC pointer. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef RTGCINTPTR *PRTGCINTPTR;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Pointer to const signed interger which can contain a GC pointer. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef const RTGCINTPTR *PCRTGCINTPTR;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Unsigned integer which can contain a GC pointer. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#if GC_ARCH_BITS == 32
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef uint32_t RTGCUINTPTR;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#elif GC_ARCH_BITS == 64
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef uint64_t RTGCUINTPTR;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#else
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync# error Unsupported GC_ARCH_BITS value.
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#endif
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Pointer to unsigned interger which can contain a GC pointer. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef RTGCUINTPTR *PRTGCUINTPTR;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Pointer to unsigned interger which can contain a GC pointer. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef const RTGCUINTPTR *PCRTGCUINTPTR;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Guest Physical Memory Address.*/
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef RTGCUINTPTR RTGCPHYS;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Pointer to Guest Physical Memory Address. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef RTGCPHYS *PRTGCPHYS;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Pointer to const Guest Physical Memory Address. */
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsynctypedef const RTGCPHYS *PCRTGCPHYS;
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync/** @def NIL_RTGCPHYS
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync * NIL GC Physical Address.
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync * NIL_RTGCPHYS is used to signal an invalid physical address, similar
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync * to the NULL pointer.
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#define NIL_RTGCPHYS ((RTGCPHYS)~0U) /** @todo change this to (~(RTGCPHYS)0) */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync/** Guest context pointer.
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync * Keep in mind that this type is an unsigned integer in
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync * HC and void pointer in GC.
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync */
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync#ifdef IN_GC
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsynctypedef void *RTGCPTR;
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync#else
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef RTGCUINTPTR RTGCPTR;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#endif
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync/** Pointer to a guest context pointer. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef RTGCPTR *PRTGCPTR;
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync/** Pointer to a const guest context pointer. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef const RTGCPTR *PCRTGCPTR;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** @def NIL_RTGCPTR
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync * NIL GC pointer.
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#define NIL_RTGCPTR ((RTGCPTR)0)
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Unsigned integer register in the guest context. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#if GC_ARCH_BITS == 32
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef uint32_t RTGCUINTREG;
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync#elif GC_ARCH_BITS == 64
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsynctypedef uint64_t RTGCUINTREG;
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync#else
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync# error "Unsupported GC_ARCH_BITS!"
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync#endif
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync/** Pointer to an unsigned integer register in the guest context. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef RTGCUINTREG *PRTGCUINTREG;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Pointer to a const unsigned integer register in the guest context. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef const RTGCUINTREG *PCRTGCUINTREG;
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** @} */
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** @defgroup grp_rt_types_cc Current Context Basic Types
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync * @ingroup grp_rt_types
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync * @{
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync */
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Current Context Physical Memory Address.*/
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#ifdef IN_GC
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef RTGCPHYS RTCCPHYS;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#else
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef RTHCPHYS RTCCPHYS;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#endif
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Pointer to Current Context Physical Memory Address. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef RTCCPHYS *PRTCCPHYS;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Pointer to const Current Context Physical Memory Address. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef const RTCCPHYS *PCRTCCPHYS;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** @def NIL_RTCCPHYS
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync * NIL CC Physical Address.
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync * NIL_RTCCPHYS is used to signal an invalid physical address, similar
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync * to the NULL pointer.
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#ifdef IN_GC
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync# define NIL_RTCCPHYS NIL_RTGCPHYS
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync#else
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync# define NIL_RTCCPHYS NIL_RTHCPHYS
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#endif
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Unsigned integer register in the current context. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#if ARCH_BITS == 32
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef uint32_t RTCCUINTREG;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#elif ARCH_BITS == 64
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef uint64_t RTCCUINTREG;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#else
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync# error "Unsupported ARCH_BITS!"
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#endif
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Pointer to an unsigned integer register in the current context. */
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsynctypedef RTCCUINTREG *PRTCCUINTREG;
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync/** Pointer to a const unsigned integer register in the current context. */
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsynctypedef const RTCCUINTREG *PCRTCCUINTREG;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** @deprecated */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef RTCCUINTREG RTUINTREG;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** @deprecated */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef RTCCUINTREG *PRTUINTREG;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** @deprecated */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef const RTCCUINTREG *PCRTUINTREG;
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync/** @} */
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** File handle. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef RTUINT RTFILE;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Pointer to file handle. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef RTFILE *PRTFILE;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Nil file handle. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#define NIL_RTFILE (~(RTFILE)0)
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync/** Loader module handle. */
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsynctypedef HCPTRTYPE(struct RTLDRMODINTERNAL *) RTLDRMOD;
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync/** Pointer to a loader module handle. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef RTLDRMOD *PRTLDRMOD;
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync/** Nil loader module handle. */
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync#define NIL_RTLDRMOD 0
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Ring-0 memory object handle. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef R0PTRTYPE(struct RTR0MEMOBJINTERNAL *) RTR0MEMOBJ;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Pointer to a Ring-0 memory object handle. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef RTR0MEMOBJ *PRTR0MEMOBJ;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Nil ring-0 memory object handle. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#define NIL_RTR0MEMOBJ 0
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync/** Native thread handle. */
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsynctypedef RTHCUINTPTR RTNATIVETHREAD;
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync/** Pointer to an native thread handle. */
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsynctypedef RTNATIVETHREAD *PRTNATIVETHREAD;
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync/** Nil native thread handle. */
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync#define NIL_RTNATIVETHREAD (~(RTNATIVETHREAD)0)
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync/** Process handle. */
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsynctypedef RTUINT RTPROCESS;
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync/** Pointer to a process handle. */
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsynctypedef RTPROCESS *PRTPROCESS;
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync/** Nil process handle. */
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync#define NIL_RTPROCESS (~(RTPROCESS)0)
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync/** @typedef RTSEMEVENT
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync * Event Semaphore handle. */
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsynctypedef HCPTRTYPE(struct RTSEMEVENTINTERNAL *) RTSEMEVENT;
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync/** Pointer to an event semaphore handle. */
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsynctypedef RTSEMEVENT *PRTSEMEVENT;
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync/** Nil event semaphore handle. */
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync#define NIL_RTSEMEVENT 0
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync/** @typedef RTSEMEVENTMULTI
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync * Event Multiple Release Semaphore handle. */
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsynctypedef HCPTRTYPE(struct RTSEMEVENTMULTIINTERNAL *) RTSEMEVENTMULTI;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Pointer to an event multiple release semaphore handle. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef RTSEMEVENTMULTI *PRTSEMEVENTMULTI;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Nil multiple release event semaphore handle. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#define NIL_RTSEMEVENTMULTI 0
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** @typedef RTSEMFASTMUTEX
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync * Fast mutex Semaphore handle. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef HCPTRTYPE(struct RTSEMFASTMUTEXINTERNAL *) RTSEMFASTMUTEX;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Pointer to a mutex semaphore handle. */
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsynctypedef RTSEMFASTMUTEX *PRTSEMFASTMUTEX;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Nil fast mutex semaphore handle. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#define NIL_RTSEMFASTMUTEX 0
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** @typedef RTSEMMUTEX
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync * Mutex Semaphore handle. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef HCPTRTYPE(struct RTSEMMUTEXINTERNAL *) RTSEMMUTEX;
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync/** Pointer to a mutex semaphore handle. */
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsynctypedef RTSEMMUTEX *PRTSEMMUTEX;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Nil mutex semaphore handle. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#define NIL_RTSEMMUTEX 0
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** @typedef RTSEMRW
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync * Read/Write Semaphore handle. */
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsynctypedef HCPTRTYPE(struct RTSEMRWINTERNAL *) RTSEMRW;
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync/** Pointer to a read/write semaphore handle. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef RTSEMRW *PRTSEMRW;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Nil read/write semaphore handle. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#define NIL_RTSEMRW 0
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync/** Spinlock handle. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef HCPTRTYPE(struct RTSPINLOCKINTERNAL *) RTSPINLOCK;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Pointer to a spinlock handle. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef RTSPINLOCK *PRTSPINLOCK;
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync/** Nil spinlock handle. */
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync#define NIL_RTSPINLOCK 0
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Socket handle. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef int RTSOCKET;
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync/** Pointer to socket handle. */
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsynctypedef RTSOCKET *PRTSOCKET;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Nil socket handle. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#define NIL_RTSOCKET (~(RTSOCKET)0)
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Thread handle.*/
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef HCPTRTYPE(struct RTTHREADINT *) RTTHREAD;
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync/** Pointer to thread handle. */
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsynctypedef RTTHREAD *PRTTHREAD;
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync/** Nil thread handle. */
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync#define NIL_RTTHREAD 0
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync/**
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync * UUID data type.
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync */
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsynctypedef union RTUUID
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync{
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync /** 8-bit view. */
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync uint8_t au8[16];
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync /** 16-bit view. */
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync uint16_t au16[8];
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync /** 32-bit view. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync uint32_t au32[4];
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync /** 64-bit view. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync uint64_t au64[2];
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync /** The way the UUID is declared by the ext2 guys. */
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync struct
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync {
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync uint32_t u32TimeLow;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync uint16_t u16TimeMid;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync uint16_t u16TimeHiAndVersion;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync uint16_t u16ClockSeq;
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync uint8_t au8Node[6];
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync } Gen;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync /** @deprecated */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync unsigned char aUuid[16];
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync} RTUUID;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Pointer to UUID data. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef RTUUID *PRTUUID;
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync/** Pointer to readonly UUID data. */
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsynctypedef const RTUUID *PCRTUUID;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/**
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync * UUID string maximum length.
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#define RTUUID_STR_LENGTH 37
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Compression handle. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef struct RTZIPCOMP *PRTZIPCOMP;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync/** Decompressor handle. */
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsynctypedef struct RTZIPDECOMP *PRTZIPDECOMP;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/**
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync * Unicode Code Point.
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef uint32_t RTUNICP;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Pointer to an Unicode Code Point. */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef RTUNICP *PRTUNICP;
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync/** Pointer to an Unicode Code Point. */
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsynctypedef const RTUNICP *PCRTUNICP;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/**
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync * UTF-16 character.
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync * @remark wchar_t is not usable since it's compiler defined.
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync * @remark When we use the term character we're not talking about unicode code point, but
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync * the basic unit of the string encoding. Thus cuc - count of unicode chars - means
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync * count of RTUTF16. And cch means count of the typedef 'char', which is assumed
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync * to be an octet.
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync */
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsynctypedef uint16_t RTUTF16;
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync/** Pointer to a UTF-16 character. */
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsynctypedef RTUTF16 *PRTUTF16;
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync/** Pointer to a const UTF-16 character. */
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsynctypedef const RTUTF16 *PCRTUTF16;
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync/**
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync * UCS-2 character.
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync * @remark wchar_t is not usable since it's compiler defined.
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync * @deprecated Use RTUTF16!
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync */
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsynctypedef RTUTF16 RTUCS2;
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync/** Pointer to UCS-2 character.
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsync * @deprecated Use PRTUTF16!
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync */
92473d1de9ab080ff886ad61a4d908f7c3429608vboxsynctypedef PRTUTF16 PRTUCS2;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Pointer to const UCS-2 character.
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync * @deprecated Use PCRTUTF16!
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef PCRTUTF16 PCRTUCS2;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/**
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync * Wait for ever if we have to.
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#define RT_INDEFINITE_WAIT (~0U)
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/**
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync * Generic process callback.
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync *
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync * @returns VBox status code. Failure will cancel the operation.
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync * @param uPercentage The percentage of the operation which has been completed.
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync * @param pvUser The user specified argument.
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef DECLCALLBACK(int) FNRTPROGRESS(unsigned uPrecentage, void *pvUser);
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** Pointer to a generic progress callback function, FNRTPROCESS(). */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsynctypedef FNRTPROGRESS *PFNRTPROGRESS;
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync/** @} */
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync#endif
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync
de6ba1989c812829372828f1801b232b3e7f09bfvboxsync