/** @file
Defines data types and constants introduced in UEFI.
Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials are licensed and made available under
the terms and conditions of the BSD License that accompanies this distribution.
The full text of the license may be found at
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
**/
#ifndef __UEFI_BASETYPE_H__
#define __UEFI_BASETYPE_H__
#include <Base.h>
//
// Basic data type definitions introduced in UEFI.
//
///
/// 128-bit buffer containing a unique identifier value.
///
///
/// Function return status for EFI API.
///
///
/// A collection of related interfaces.
///
///
/// Handle to an event structure.
///
///
/// Task priority level.
///
///
/// Logical block address.
///
///
/// 64-bit physical memory address.
///
///
/// 64-bit virtual memory address.
///
///
/// EFI Time Abstraction:
/// Year: 1900 - 9999
/// Month: 1 - 12
/// Day: 1 - 31
/// Hour: 0 - 23
/// Minute: 0 - 59
/// Second: 0 - 59
/// Nanosecond: 0 - 999,999,999
/// TimeZone: -1440 to 1440 or 2047
///
typedef struct {
} EFI_TIME;
///
/// 4-byte buffer. An IPv4 internet protocol address.
///
typedef struct {
///
/// 16-byte buffer. An IPv6 internet protocol address.
///
typedef struct {
///
/// 32-byte buffer containing a network Media Access Control address.
///
typedef struct {
///
/// 16-byte buffer aligned on a 4-byte boundary.
/// An IPv4 or IPv6 internet protocol address.
///
typedef union {
///
/// Enumeration of EFI_STATUS.
///@{
///@}
///
/// Define macro to encode the status code.
///
///
/// ICMP error definitions
///@{
///@}
///
/// Tcp connection status definitions
///@{
///@}
//
// The EFI memory allocation functions work in units of EFI_PAGEs that are
// 4KB. This should in no way be confused with the page size of the processor.
// An EFI_PAGE is just the quanta of memory in EFI.
//
/**
Macro that converts a size, in bytes, to a number of EFI_PAGESs.
@param Size A size in bytes. This parameter is assumed to be type UINTN.
Passing in a parameter that is larger than UINTN may produce
unexpected results.
@return The number of EFI_PAGESs associated with the number of bytes specified
by Size.
**/
/**
Macro that converts a number of EFI_PAGEs to a size in bytes.
@param Pages The number of EFI_PAGES. This parameter is assumed to be
type UINTN. Passing in a parameter that is larger than
UINTN may produce unexpected results.
@return The number of bytes associated with the number of EFI_PAGEs specified
by Pages.
**/
///
/// PE32+ Machine type for IA32 UEFI images.
///
///
/// PE32+ Machine type for IA64 UEFI images.
///
///
/// PE32+ Machine type for EBC UEFI images.
///
///
/// PE32+ Machine type for X64 UEFI images.
///
///
///
#if defined (MDE_CPU_IA32)
#elif defined (MDE_CPU_IPF)
#elif defined (MDE_CPU_X64)
#elif defined (MDE_CPU_ARM)
#define EFI_IMAGE_MACHINE_CROSS_TYPE_SUPPORTED(Machine) ((Machine) == EFI_IMAGE_MACHINE_ARMTHUMB_MIXED)
#elif defined (MDE_CPU_EBC)
///
/// This is just to make sure you can cross compile with the EBC compiler.
/// It does not make sense to have a PE loader coded in EBC.
///
#else
#endif
#endif