UefiBaseType.h

Go to the documentation of this file.
00001 /** @file
00002   Defines data types and constants introduced in UEFI.
00003 
00004   Copyright (c) 2006 - 2008, Intel Corporation
00005   All rights reserved. This program and the accompanying materials
00006   are licensed and made available under the terms and conditions of the BSD License
00007   which accompanies this distribution.  The full text of the license may be found at
00008   http://opensource.org/licenses/bsd-license.php
00009 
00010   THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
00011   WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
00012 
00013 **/
00014 
00015 #ifndef __UEFI_BASETYPE_H__
00016 #define __UEFI_BASETYPE_H__
00017 
00018 #include <gpxe/efi/Base.h>
00019 
00020 //
00021 // Basical data type definitions introduced in UEFI.
00022 //
00023 
00024 ///
00025 /// 128-bit buffer containing a unique identifier value.
00026 ///
00027 typedef GUID                      EFI_GUID;
00028 ///
00029 /// Function return status for EFI API
00030 ///
00031 typedef RETURN_STATUS             EFI_STATUS;
00032 ///
00033 /// A collection of related interfaces.
00034 ///
00035 typedef VOID                      *EFI_HANDLE;
00036 ///
00037 /// Handle to an event structure.
00038 ///
00039 typedef VOID                      *EFI_EVENT;
00040 ///
00041 /// Task priority level.
00042 ///
00043 typedef UINTN                     EFI_TPL;
00044 ///
00045 /// Logical block address.
00046 ///
00047 typedef UINT64                    EFI_LBA;
00048 typedef UINT64                    EFI_PHYSICAL_ADDRESS;
00049 typedef UINT64                    EFI_VIRTUAL_ADDRESS;
00050 
00051 ///
00052 /// EFI Time Abstraction:
00053 ///  Year:       1998 - 20XX
00054 ///  Month:      1 - 12
00055 ///  Day:        1 - 31
00056 ///  Hour:       0 - 23
00057 ///  Minute:     0 - 59
00058 ///  Second:     0 - 59
00059 ///  Nanosecond: 0 - 999,999,999
00060 ///  TimeZone:   -1440 to 1440 or 2047
00061 ///
00062 typedef struct {
00063   UINT16  Year;
00064   UINT8   Month;
00065   UINT8   Day;
00066   UINT8   Hour;
00067   UINT8   Minute;
00068   UINT8   Second;
00069   UINT8   Pad1;
00070   UINT32  Nanosecond;
00071   INT16   TimeZone;
00072   UINT8   Daylight;
00073   UINT8   Pad2;
00074 } EFI_TIME;
00075 
00076 
00077 ///
00078 /// 4-byte buffer. An IPv4 internet protocol address.
00079 ///
00080 typedef struct {
00081   UINT8 Addr[4];
00082 } EFI_IPv4_ADDRESS;
00083 
00084 ///
00085 /// 16-byte buffer. An IPv6 internet protocol address
00086 ///
00087 typedef struct {
00088   UINT8 Addr[16];
00089 } EFI_IPv6_ADDRESS;
00090 
00091 ///
00092 /// 32-byte buffer containing a network Media Access Control address.
00093 ///
00094 typedef struct {
00095   UINT8 Addr[32];
00096 } EFI_MAC_ADDRESS;
00097 
00098 ///
00099 /// 16-byte buffer aligned on a 4-byte boundary.
00100 /// An IPv4 or IPv6 internet protocol address.
00101 ///
00102 typedef union {
00103   UINT32            Addr[4];
00104   EFI_IPv4_ADDRESS  v4;
00105   EFI_IPv6_ADDRESS  v6;
00106 } EFI_IP_ADDRESS;
00107 
00108 
00109 //
00110 // Enumeration of EFI_STATUS.
00111 //
00112 #define EFI_SUCCESS               RETURN_SUCCESS
00113 #define EFI_LOAD_ERROR            RETURN_LOAD_ERROR
00114 #define EFI_INVALID_PARAMETER     RETURN_INVALID_PARAMETER
00115 #define EFI_UNSUPPORTED           RETURN_UNSUPPORTED
00116 #define EFI_BAD_BUFFER_SIZE       RETURN_BAD_BUFFER_SIZE
00117 #define EFI_BUFFER_TOO_SMALL      RETURN_BUFFER_TOO_SMALL
00118 #define EFI_NOT_READY             RETURN_NOT_READY
00119 #define EFI_DEVICE_ERROR          RETURN_DEVICE_ERROR
00120 #define EFI_WRITE_PROTECTED       RETURN_WRITE_PROTECTED
00121 #define EFI_OUT_OF_RESOURCES      RETURN_OUT_OF_RESOURCES
00122 #define EFI_VOLUME_CORRUPTED      RETURN_VOLUME_CORRUPTED
00123 #define EFI_VOLUME_FULL           RETURN_VOLUME_FULL
00124 #define EFI_NO_MEDIA              RETURN_NO_MEDIA
00125 #define EFI_MEDIA_CHANGED         RETURN_MEDIA_CHANGED
00126 #define EFI_NOT_FOUND             RETURN_NOT_FOUND
00127 #define EFI_ACCESS_DENIED         RETURN_ACCESS_DENIED
00128 #define EFI_NO_RESPONSE           RETURN_NO_RESPONSE
00129 #define EFI_NO_MAPPING            RETURN_NO_MAPPING
00130 #define EFI_TIMEOUT               RETURN_TIMEOUT
00131 #define EFI_NOT_STARTED           RETURN_NOT_STARTED
00132 #define EFI_ALREADY_STARTED       RETURN_ALREADY_STARTED
00133 #define EFI_ABORTED               RETURN_ABORTED
00134 #define EFI_ICMP_ERROR            RETURN_ICMP_ERROR
00135 #define EFI_TFTP_ERROR            RETURN_TFTP_ERROR
00136 #define EFI_PROTOCOL_ERROR        RETURN_PROTOCOL_ERROR
00137 #define EFI_INCOMPATIBLE_VERSION  RETURN_INCOMPATIBLE_VERSION
00138 #define EFI_SECURITY_VIOLATION    RETURN_SECURITY_VIOLATION
00139 #define EFI_CRC_ERROR             RETURN_CRC_ERROR
00140 #define EFI_END_OF_MEDIA          RETURN_END_OF_MEDIA
00141 #define EFI_END_OF_FILE           RETURN_END_OF_FILE
00142 #define EFI_INVALID_LANGUAGE      RETURN_INVALID_LANGUAGE
00143 
00144 #define EFI_WARN_UNKNOWN_GLYPH    RETURN_WARN_UNKNOWN_GLYPH
00145 #define EFI_WARN_DELETE_FAILURE   RETURN_WARN_DELETE_FAILURE
00146 #define EFI_WARN_WRITE_FAILURE    RETURN_WARN_WRITE_FAILURE
00147 #define EFI_WARN_BUFFER_TOO_SMALL RETURN_WARN_BUFFER_TOO_SMALL
00148 
00149 
00150 //
00151 // Define macro to encode the status code.
00152 //
00153 #define EFIERR(_a)                ENCODE_ERROR(_a)
00154 
00155 #define EFI_ERROR(A)              RETURN_ERROR(A)
00156 
00157 //
00158 // Define macros to build data structure signatures from characters.
00159 //
00160 #define EFI_SIGNATURE_16(A, B)                    SIGNATURE_16 (A, B)
00161 #define EFI_SIGNATURE_32(A, B, C, D)              SIGNATURE_32 (A, B, C, D)
00162 #define EFI_SIGNATURE_64(A, B, C, D, E, F, G, H)  SIGNATURE_64 (A, B, C, D, E, F, G, H)
00163 
00164 
00165 ///
00166 ///  Returns the byte offset to a field within a structure
00167 ///
00168 #define EFI_FIELD_OFFSET(TYPE,Field) ((UINTN)(&(((TYPE *) 0)->Field)))
00169 
00170 //
00171 // The EFI memory allocation functions work in units of EFI_PAGEs that are
00172 // 4K. This should in no way be confused with the page size of the processor.
00173 // An EFI_PAGE is just the quanta of memory in EFI.
00174 //
00175 #define EFI_PAGE_SIZE             0x1000
00176 #define EFI_PAGE_MASK             0xFFF
00177 #define EFI_PAGE_SHIFT            12
00178 
00179 #define EFI_SIZE_TO_PAGES(a)  (((a) >> EFI_PAGE_SHIFT) + (((a) & EFI_PAGE_MASK) ? 1 : 0))
00180 
00181 #define EFI_PAGES_TO_SIZE(a)   ( (a) << EFI_PAGE_SHIFT)
00182 
00183 
00184 #define EFI_MAX_BIT               MAX_BIT
00185 #define EFI_MAX_ADDRESS           MAX_ADDRESS
00186 
00187 
00188 ///
00189 /// Limited buffer size for a language code recommended by RFC3066
00190 /// (42 characters plus a NULL terminator)
00191 ///
00192 #define RFC_3066_ENTRY_SIZE             (42 + 1)
00193 
00194 ///
00195 /// The size of a 3 character ISO639 language code.
00196 ///
00197 #define ISO_639_2_ENTRY_SIZE            3
00198 
00199 
00200 #endif

Generated on Tue Apr 6 20:01:07 2010 for gPXE by  doxygen 1.5.7.1