The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/contrib/edk2/Include/Uefi/UefiBaseType.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /** @file
    2   Defines data types and constants introduced in UEFI.
    3 
    4 Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
    5 Portions copyright (c) 2011 - 2016, ARM Ltd. All rights reserved.<BR>
    6 Copyright (c) 2020, Hewlett Packard Enterprise Development LP. All rights reserved.<BR>
    7 
    8 SPDX-License-Identifier: BSD-2-Clause-Patent
    9 
   10 **/
   11 
   12 #ifndef __UEFI_BASETYPE_H__
   13 #define __UEFI_BASETYPE_H__
   14 
   15 #include <Base.h>
   16 
   17 //
   18 // Basic data type definitions introduced in UEFI.
   19 //
   20 
   21 ///
   22 /// 128-bit buffer containing a unique identifier value.
   23 ///
   24 typedef GUID                      EFI_GUID;
   25 ///
   26 /// Function return status for EFI API.
   27 ///
   28 typedef RETURN_STATUS             EFI_STATUS;
   29 ///
   30 /// A collection of related interfaces.
   31 ///
   32 typedef VOID                      *EFI_HANDLE;
   33 ///
   34 /// Handle to an event structure.
   35 ///
   36 typedef VOID                      *EFI_EVENT;
   37 ///
   38 /// Task priority level.
   39 ///
   40 typedef UINTN                     EFI_TPL;
   41 ///
   42 /// Logical block address.
   43 ///
   44 typedef UINT64                    EFI_LBA;
   45 
   46 ///
   47 /// 64-bit physical memory address.
   48 ///
   49 typedef UINT64                    EFI_PHYSICAL_ADDRESS;
   50 
   51 ///
   52 /// 64-bit virtual memory address.
   53 ///
   54 typedef UINT64                    EFI_VIRTUAL_ADDRESS;
   55 
   56 ///
   57 /// EFI Time Abstraction:
   58 ///  Year:       1900 - 9999
   59 ///  Month:      1 - 12
   60 ///  Day:        1 - 31
   61 ///  Hour:       0 - 23
   62 ///  Minute:     0 - 59
   63 ///  Second:     0 - 59
   64 ///  Nanosecond: 0 - 999,999,999
   65 ///  TimeZone:   -1440 to 1440 or 2047
   66 ///
   67 typedef struct {
   68   UINT16  Year;
   69   UINT8   Month;
   70   UINT8   Day;
   71   UINT8   Hour;
   72   UINT8   Minute;
   73   UINT8   Second;
   74   UINT8   Pad1;
   75   UINT32  Nanosecond;
   76   INT16   TimeZone;
   77   UINT8   Daylight;
   78   UINT8   Pad2;
   79 } EFI_TIME;
   80 
   81 
   82 ///
   83 /// 4-byte buffer. An IPv4 internet protocol address.
   84 ///
   85 typedef IPv4_ADDRESS EFI_IPv4_ADDRESS;
   86 
   87 ///
   88 /// 16-byte buffer. An IPv6 internet protocol address.
   89 ///
   90 typedef IPv6_ADDRESS EFI_IPv6_ADDRESS;
   91 
   92 ///
   93 /// 32-byte buffer containing a network Media Access Control address.
   94 ///
   95 typedef struct {
   96   UINT8 Addr[32];
   97 } EFI_MAC_ADDRESS;
   98 
   99 ///
  100 /// 16-byte buffer aligned on a 4-byte boundary.
  101 /// An IPv4 or IPv6 internet protocol address.
  102 ///
  103 typedef union {
  104   UINT32            Addr[4];
  105   EFI_IPv4_ADDRESS  v4;
  106   EFI_IPv6_ADDRESS  v6;
  107 } EFI_IP_ADDRESS;
  108 
  109 
  110 ///
  111 /// Enumeration of EFI_STATUS.
  112 ///@{
  113 #define EFI_SUCCESS               RETURN_SUCCESS
  114 #define EFI_LOAD_ERROR            RETURN_LOAD_ERROR
  115 #define EFI_INVALID_PARAMETER     RETURN_INVALID_PARAMETER
  116 #define EFI_UNSUPPORTED           RETURN_UNSUPPORTED
  117 #define EFI_BAD_BUFFER_SIZE       RETURN_BAD_BUFFER_SIZE
  118 #define EFI_BUFFER_TOO_SMALL      RETURN_BUFFER_TOO_SMALL
  119 #define EFI_NOT_READY             RETURN_NOT_READY
  120 #define EFI_DEVICE_ERROR          RETURN_DEVICE_ERROR
  121 #define EFI_WRITE_PROTECTED       RETURN_WRITE_PROTECTED
  122 #define EFI_OUT_OF_RESOURCES      RETURN_OUT_OF_RESOURCES
  123 #define EFI_VOLUME_CORRUPTED      RETURN_VOLUME_CORRUPTED
  124 #define EFI_VOLUME_FULL           RETURN_VOLUME_FULL
  125 #define EFI_NO_MEDIA              RETURN_NO_MEDIA
  126 #define EFI_MEDIA_CHANGED         RETURN_MEDIA_CHANGED
  127 #define EFI_NOT_FOUND             RETURN_NOT_FOUND
  128 #define EFI_ACCESS_DENIED         RETURN_ACCESS_DENIED
  129 #define EFI_NO_RESPONSE           RETURN_NO_RESPONSE
  130 #define EFI_NO_MAPPING            RETURN_NO_MAPPING
  131 #define EFI_TIMEOUT               RETURN_TIMEOUT
  132 #define EFI_NOT_STARTED           RETURN_NOT_STARTED
  133 #define EFI_ALREADY_STARTED       RETURN_ALREADY_STARTED
  134 #define EFI_ABORTED               RETURN_ABORTED
  135 #define EFI_ICMP_ERROR            RETURN_ICMP_ERROR
  136 #define EFI_TFTP_ERROR            RETURN_TFTP_ERROR
  137 #define EFI_PROTOCOL_ERROR        RETURN_PROTOCOL_ERROR
  138 #define EFI_INCOMPATIBLE_VERSION  RETURN_INCOMPATIBLE_VERSION
  139 #define EFI_SECURITY_VIOLATION    RETURN_SECURITY_VIOLATION
  140 #define EFI_CRC_ERROR             RETURN_CRC_ERROR
  141 #define EFI_END_OF_MEDIA          RETURN_END_OF_MEDIA
  142 #define EFI_END_OF_FILE           RETURN_END_OF_FILE
  143 #define EFI_INVALID_LANGUAGE      RETURN_INVALID_LANGUAGE
  144 #define EFI_COMPROMISED_DATA      RETURN_COMPROMISED_DATA
  145 #define EFI_HTTP_ERROR            RETURN_HTTP_ERROR
  146 
  147 #define EFI_WARN_UNKNOWN_GLYPH    RETURN_WARN_UNKNOWN_GLYPH
  148 #define EFI_WARN_DELETE_FAILURE   RETURN_WARN_DELETE_FAILURE
  149 #define EFI_WARN_WRITE_FAILURE    RETURN_WARN_WRITE_FAILURE
  150 #define EFI_WARN_BUFFER_TOO_SMALL RETURN_WARN_BUFFER_TOO_SMALL
  151 #define EFI_WARN_STALE_DATA       RETURN_WARN_STALE_DATA
  152 #define EFI_WARN_FILE_SYSTEM      RETURN_WARN_FILE_SYSTEM
  153 ///@}
  154 
  155 ///
  156 /// Define macro to encode the status code.
  157 ///
  158 #define EFIERR(_a)                ENCODE_ERROR(_a)
  159 
  160 #define EFI_ERROR(A)              RETURN_ERROR(A)
  161 
  162 ///
  163 /// ICMP error definitions
  164 ///@{
  165 #define EFI_NETWORK_UNREACHABLE   EFIERR(100)
  166 #define EFI_HOST_UNREACHABLE      EFIERR(101)
  167 #define EFI_PROTOCOL_UNREACHABLE  EFIERR(102)
  168 #define EFI_PORT_UNREACHABLE      EFIERR(103)
  169 ///@}
  170 
  171 ///
  172 /// Tcp connection status definitions
  173 ///@{
  174 #define EFI_CONNECTION_FIN        EFIERR(104)
  175 #define EFI_CONNECTION_RESET      EFIERR(105)
  176 #define EFI_CONNECTION_REFUSED    EFIERR(106)
  177 ///@}
  178 
  179 //
  180 // The EFI memory allocation functions work in units of EFI_PAGEs that are
  181 // 4KB. This should in no way be confused with the page size of the processor.
  182 // An EFI_PAGE is just the quanta of memory in EFI.
  183 //
  184 #define EFI_PAGE_SIZE             SIZE_4KB
  185 #define EFI_PAGE_MASK             0xFFF
  186 #define EFI_PAGE_SHIFT            12
  187 
  188 /**
  189   Macro that converts a size, in bytes, to a number of EFI_PAGESs.
  190 
  191   @param  Size      A size in bytes.  This parameter is assumed to be type UINTN.
  192                     Passing in a parameter that is larger than UINTN may produce
  193                     unexpected results.
  194 
  195   @return  The number of EFI_PAGESs associated with the number of bytes specified
  196            by Size.
  197 
  198 **/
  199 #define EFI_SIZE_TO_PAGES(Size)  (((Size) >> EFI_PAGE_SHIFT) + (((Size) & EFI_PAGE_MASK) ? 1 : 0))
  200 
  201 /**
  202   Macro that converts a number of EFI_PAGEs to a size in bytes.
  203 
  204   @param  Pages     The number of EFI_PAGES.  This parameter is assumed to be
  205                     type UINTN.  Passing in a parameter that is larger than
  206                     UINTN may produce unexpected results.
  207 
  208   @return  The number of bytes associated with the number of EFI_PAGEs specified
  209            by Pages.
  210 
  211 **/
  212 #define EFI_PAGES_TO_SIZE(Pages)  ((Pages) << EFI_PAGE_SHIFT)
  213 
  214 ///
  215 /// PE32+ Machine type for IA32 UEFI images.
  216 ///
  217 #define EFI_IMAGE_MACHINE_IA32            0x014C
  218 
  219 ///
  220 /// PE32+ Machine type for IA64 UEFI images.
  221 ///
  222 #define EFI_IMAGE_MACHINE_IA64            0x0200
  223 
  224 ///
  225 /// PE32+ Machine type for EBC UEFI images.
  226 ///
  227 #define EFI_IMAGE_MACHINE_EBC             0x0EBC
  228 
  229 ///
  230 /// PE32+ Machine type for X64 UEFI images.
  231 ///
  232 #define EFI_IMAGE_MACHINE_X64             0x8664
  233 
  234 ///
  235 /// PE32+ Machine type for ARM mixed ARM and Thumb/Thumb2 images.
  236 ///
  237 #define EFI_IMAGE_MACHINE_ARMTHUMB_MIXED  0x01C2
  238 
  239 ///
  240 /// PE32+ Machine type for AARCH64 A64 images.
  241 ///
  242 #define EFI_IMAGE_MACHINE_AARCH64  0xAA64
  243 
  244 ///
  245 /// PE32+ Machine type for RISC-V 32/64/128
  246 ///
  247 #define EFI_IMAGE_MACHINE_RISCV32   0x5032
  248 #define EFI_IMAGE_MACHINE_RISCV64   0x5064
  249 #define EFI_IMAGE_MACHINE_RISCV128  0x5128
  250 
  251 #if   defined (MDE_CPU_IA32)
  252 
  253 #define EFI_IMAGE_MACHINE_TYPE_SUPPORTED(Machine) \
  254   ((Machine) == EFI_IMAGE_MACHINE_IA32)
  255 
  256 #define EFI_IMAGE_MACHINE_CROSS_TYPE_SUPPORTED(Machine) ((Machine) == EFI_IMAGE_MACHINE_X64)
  257 
  258 #elif defined (MDE_CPU_X64)
  259 
  260 #define EFI_IMAGE_MACHINE_TYPE_SUPPORTED(Machine) \
  261   ((Machine) == EFI_IMAGE_MACHINE_X64)
  262 
  263 #define EFI_IMAGE_MACHINE_CROSS_TYPE_SUPPORTED(Machine) ((Machine) == EFI_IMAGE_MACHINE_IA32)
  264 
  265 #elif defined (MDE_CPU_ARM)
  266 
  267 #define EFI_IMAGE_MACHINE_TYPE_SUPPORTED(Machine) ((Machine) == EFI_IMAGE_MACHINE_ARMTHUMB_MIXED)
  268 
  269 #define EFI_IMAGE_MACHINE_CROSS_TYPE_SUPPORTED(Machine) (FALSE)
  270 
  271 #elif defined (MDE_CPU_AARCH64)
  272 
  273 #define EFI_IMAGE_MACHINE_TYPE_SUPPORTED(Machine) \
  274   ((Machine) == EFI_IMAGE_MACHINE_AARCH64)
  275 
  276 #define EFI_IMAGE_MACHINE_CROSS_TYPE_SUPPORTED(Machine) (FALSE)
  277 
  278 #elif defined (MDE_CPU_RISCV64)
  279 #define EFI_IMAGE_MACHINE_TYPE_SUPPORTED(Machine) \
  280   ((Machine) == EFI_IMAGE_MACHINE_RISCV64)
  281 
  282 #define EFI_IMAGE_MACHINE_CROSS_TYPE_SUPPORTED(Machine) (FALSE)
  283 
  284 #elif defined (MDE_CPU_EBC)
  285 
  286 ///
  287 /// This is just to make sure you can cross compile with the EBC compiler.
  288 /// It does not make sense to have a PE loader coded in EBC.
  289 ///
  290 #define EFI_IMAGE_MACHINE_TYPE_SUPPORTED(Machine) ((Machine) == EFI_IMAGE_MACHINE_EBC)
  291 
  292 #define EFI_IMAGE_MACHINE_CROSS_TYPE_SUPPORTED(Machine) (FALSE)
  293 
  294 #else
  295 #error Unknown Processor Type
  296 #endif
  297 
  298 #endif

Cache object: cea85bd38d2a4e1166d181f17c14939c


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.