UefiBaseType.h revision ce2f555794fdb9efaf6af0d0f45a8892c58fcaa7
1 2/* @file 3 4 Defines data types and constants introduced in UEFI. 5 6Copyright (c) 2006 - 2007, Intel Corporation 7All rights reserved. This program and the accompanying materials 8are licensed and made available under the terms and conditions of the BSD License 9which accompanies this distribution. The full text of the license may be found at 10http://opensource.org/licenses/bsd-license.php 11 12THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 13WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 14 15**/ 16 17#ifndef __UEFI_BASETYPE_H__ 18#define __UEFI_BASETYPE_H__ 19 20#include "Base.h" 21 22// 23// Basical data type definitions introduced in UEFI. 24// 25typedef GUID EFI_GUID; 26typedef RETURN_STATUS EFI_STATUS; 27typedef VOID *EFI_HANDLE; 28 29typedef VOID *EFI_EVENT; 30 31typedef UINTN EFI_TPL; 32 33 34typedef UINT64 EFI_LBA; 35 36 37typedef UINT16 EFI_HII_HANDLE; 38typedef UINT16 STRING_REF; 39 40typedef UINT64 EFI_PHYSICAL_ADDRESS; 41typedef UINT64 EFI_VIRTUAL_ADDRESS; 42 43// 44// EFI Time Abstraction: 45// Year: 2000 - 20XX 46// Month: 1 - 12 47// Day: 1 - 31 48// Hour: 0 - 23 49// Minute: 0 - 59 50// Second: 0 - 59 51// Nanosecond: 0 - 999,999,999 52// TimeZone: -1440 to 1440 or 2047 53// 54typedef struct { 55 UINT16 Year; 56 UINT8 Month; 57 UINT8 Day; 58 UINT8 Hour; 59 UINT8 Minute; 60 UINT8 Second; 61 UINT8 Pad1; 62 UINT32 Nanosecond; 63 INT16 TimeZone; 64 UINT8 Daylight; 65 UINT8 Pad2; 66} EFI_TIME; 67 68 69// 70// Networking Definitions 71// 72typedef struct { 73 UINT8 Addr[4]; 74} EFI_IPv4_ADDRESS; 75 76typedef struct { 77 UINT8 Addr[16]; 78} EFI_IPv6_ADDRESS; 79 80typedef struct { 81 UINT8 Addr[32]; 82} EFI_MAC_ADDRESS; 83 84typedef union { 85 UINT32 Addr[4]; 86 EFI_IPv4_ADDRESS v4; 87 EFI_IPv6_ADDRESS v6; 88} EFI_IP_ADDRESS; 89 90 91// 92// Enumeration of EFI_STATUS. 93// 94#define EFI_SUCCESS RETURN_SUCCESS 95#define EFI_LOAD_ERROR RETURN_LOAD_ERROR 96#define EFI_INVALID_PARAMETER RETURN_INVALID_PARAMETER 97#define EFI_UNSUPPORTED RETURN_UNSUPPORTED 98#define EFI_BAD_BUFFER_SIZE RETURN_BAD_BUFFER_SIZE 99#define EFI_BUFFER_TOO_SMALL RETURN_BUFFER_TOO_SMALL 100#define EFI_NOT_READY RETURN_NOT_READY 101#define EFI_DEVICE_ERROR RETURN_DEVICE_ERROR 102#define EFI_WRITE_PROTECTED RETURN_WRITE_PROTECTED 103#define EFI_OUT_OF_RESOURCES RETURN_OUT_OF_RESOURCES 104#define EFI_VOLUME_CORRUPTED RETURN_VOLUME_CORRUPTED 105#define EFI_VOLUME_FULL RETURN_VOLUME_FULL 106#define EFI_NO_MEDIA RETURN_NO_MEDIA 107#define EFI_MEDIA_CHANGED RETURN_MEDIA_CHANGED 108#define EFI_NOT_FOUND RETURN_NOT_FOUND 109#define EFI_ACCESS_DENIED RETURN_ACCESS_DENIED 110#define EFI_NO_RESPONSE RETURN_NO_RESPONSE 111#define EFI_NO_MAPPING RETURN_NO_MAPPING 112#define EFI_TIMEOUT RETURN_TIMEOUT 113#define EFI_NOT_STARTED RETURN_NOT_STARTED 114#define EFI_ALREADY_STARTED RETURN_ALREADY_STARTED 115#define EFI_ABORTED RETURN_ABORTED 116#define EFI_ICMP_ERROR RETURN_ICMP_ERROR 117#define EFI_TFTP_ERROR RETURN_TFTP_ERROR 118#define EFI_PROTOCOL_ERROR RETURN_PROTOCOL_ERROR 119#define EFI_INCOMPATIBLE_VERSION RETURN_INCOMPATIBLE_VERSION 120#define EFI_SECURITY_VIOLATION RETURN_SECURITY_VIOLATION 121#define EFI_CRC_ERROR RETURN_CRC_ERROR 122#define EFI_END_OF_MEDIA RETURN_END_OF_MEDIA 123#define EFI_END_OF_FILE RETURN_END_OF_FILE 124 125#define EFI_WARN_UNKNOWN_GLYPH RETURN_WARN_UNKNOWN_GLYPH 126#define EFI_WARN_DELETE_FAILURE RETURN_WARN_DELETE_FAILURE 127#define EFI_WARN_WRITE_FAILURE RETURN_WARN_WRITE_FAILURE 128#define EFI_WARN_BUFFER_TOO_SMALL RETURN_WARN_BUFFER_TOO_SMALL 129 130 131#define NULL_HANDLE ((VOID *) 0) 132 133// 134// Define macro to encode the status code. 135// 136#define EFIERR(_a) ENCODE_ERROR(_a) 137 138#define EFI_ERROR(A) RETURN_ERROR(A) 139 140// 141// Define macros to build data structure signatures from characters. 142// 143#define EFI_SIGNATURE_16(A, B) ((A) | (B << 8)) 144#define EFI_SIGNATURE_32(A, B, C, D) (EFI_SIGNATURE_16 (A, B) | (EFI_SIGNATURE_16 (C, D) << 16)) 145#define EFI_SIGNATURE_64(A, B, C, D, E, F, G, H) \ 146 (EFI_SIGNATURE_32 (A, B, C, D) | ((UINT64) (EFI_SIGNATURE_32 (E, F, G, H)) << 32)) 147 148 149// 150// Returns the byte offset to a field within a structure 151// 152#define EFI_FIELD_OFFSET(TYPE,Field) ((UINTN)(&(((TYPE *) 0)->Field))) 153 154// 155// The EFI memory allocation functions work in units of EFI_PAGEs that are 156// 4K. This should in no way be confused with the page size of the processor. 157// An EFI_PAGE is just the quanta of memory in EFI. 158// 159#define EFI_PAGE_SIZE 0x1000 160#define EFI_PAGE_MASK 0xFFF 161#define EFI_PAGE_SHIFT 12 162 163#define EFI_SIZE_TO_PAGES(a) (((a) >> EFI_PAGE_SHIFT) + (((a) & EFI_PAGE_MASK) ? 1 : 0)) 164 165#define EFI_PAGES_TO_SIZE(a) ( (a) << EFI_PAGE_SHIFT) 166 167 168#define EFI_MAX_BIT MAX_BIT 169#define EFI_MAX_ADDRESS MAX_ADDRESS 170 171#endif 172