FreeBSD-5.3/sys/boot/efi/include/efidef.h

Compare this file to the similar file:
Show the results in this format:

/* $FreeBSD: src/sys/boot/efi/include/efidef.h,v 1.2 2002/05/19 03:17:20 marcel Exp $ */
#ifndef _EFI_DEF_H
#define _EFI_DEF_H

/*++

Copyright (c) 1998  Intel Corporation

Module Name:

    efidef.h

Abstract:

    EFI definitions




Revision History

--*/

typedef UINT16          CHAR16;
typedef UINT8           CHAR8;
typedef UINT8           BOOLEAN;

#ifndef TRUE
    #define TRUE    ((BOOLEAN) 1)
    #define FALSE   ((BOOLEAN) 0)
#endif

#ifndef NULL
    #define NULL    ((VOID *) 0)
#endif

typedef UINTN           EFI_STATUS;
typedef UINT64          EFI_LBA;
typedef UINTN           EFI_TPL;
typedef VOID            *EFI_HANDLE;
typedef VOID            *EFI_EVENT;


/*
 * Prototype argument decoration for EFI parameters to indicate
 * their direction
 *
 * IN - argument is passed into the function
 * OUT - argument (pointer) is returned from the function
 * OPTIONAL - argument is optional
 */

#ifndef IN
    #define IN
    #define OUT
    #define OPTIONAL
#endif


/*
 * A GUID
 */

typedef struct {          
    UINT32  Data1;
    UINT16  Data2;
    UINT16  Data3;
    UINT8   Data4[8]; 
} EFI_GUID;


/*
 * Time
 */

typedef struct {          
	UINT16      Year;       /* 1998 - 20XX */
	UINT8       Month;      /* 1 - 12 */
	UINT8       Day;        /* 1 - 31 */
	UINT8       Hour;       /* 0 - 23 */
	UINT8       Minute;     /* 0 - 59 */
	UINT8       Second;     /* 0 - 59 */
	UINT8       Pad1;
	UINT32      Nanosecond; /* 0 - 999,999,999 */
	INT16       TimeZone;   /* -1440 to 1440 or 2047 */
	UINT8       Daylight;
	UINT8       Pad2;
} EFI_TIME;

/* Bit definitions for EFI_TIME.Daylight */
#define EFI_TIME_ADJUST_DAYLIGHT    0x01
#define EFI_TIME_IN_DAYLIGHT        0x02

/* Value definition for EFI_TIME.TimeZone */
#define EFI_UNSPECIFIED_TIMEZONE    0x07FF



/*
 * Networking
 */

typedef struct {
    UINT8                   Addr[4];
} EFI_IPv4_ADDRESS;

typedef struct {
    UINT8                   Addr[16];
} EFI_IPv6_ADDRESS;

typedef struct {
    UINT8                   Addr[32];
} EFI_MAC_ADDRESS;

/*
 * Memory
 */

typedef UINT64          EFI_PHYSICAL_ADDRESS;
typedef UINT64          EFI_VIRTUAL_ADDRESS;

typedef enum {
    AllocateAnyPages,
    AllocateMaxAddress,
    AllocateAddress,
    MaxAllocateType
} EFI_ALLOCATE_TYPE;

/*
 * Preseve the attr on any range supplied.
 * ConventialMemory must have WB,SR,SW when supplied.
 * When allocating from ConventialMemory always make it WB,SR,SW
 * When returning to ConventialMemory always make it WB,SR,SW
 * When getting the memory map, or on RT for runtime types
 */

typedef enum {
    EfiReservedMemoryType,
    EfiLoaderCode,
    EfiLoaderData,
    EfiBootServicesCode,
    EfiBootServicesData,
    EfiRuntimeServicesCode,
    EfiRuntimeServicesData,
    EfiConventionalMemory,
    EfiUnusableMemory,
    EfiACPIReclaimMemory,
    EfiACPIMemoryNVS,
    EfiMemoryMappedIO,
    EfiMemoryMappedIOPortSpace,
    EfiPalCode,
    EfiMaxMemoryType
} EFI_MEMORY_TYPE;

/* possible caching types for the memory range */
#define EFI_MEMORY_UC           0x0000000000000001
#define EFI_MEMORY_WC           0x0000000000000002
#define EFI_MEMORY_WT           0x0000000000000004
#define EFI_MEMORY_WB           0x0000000000000008
#define EFI_MEMORY_UCE          0x0000000000000010  

/* physical memory protection on range */
#define EFI_MEMORY_WP           0x0000000000001000
#define EFI_MEMORY_RP           0x0000000000002000
#define EFI_MEMORY_XP           0x0000000000004000

/* range requires a runtime mapping */
#define EFI_MEMORY_RUNTIME      0x8000000000000000

#define EFI_MEMORY_DESCRIPTOR_VERSION  1
typedef struct {
	UINT32                          Type;           /* 32 bit padding */
	EFI_PHYSICAL_ADDRESS            PhysicalStart;
	EFI_VIRTUAL_ADDRESS             VirtualStart;
	UINT64                          NumberOfPages;
	UINT64                          Attribute;
} EFI_MEMORY_DESCRIPTOR;

/*
 * International Language
 */

typedef UINT8   ISO_639_2;
#define ISO_639_2_ENTRY_SIZE    3

#define EFI_PAGE_SIZE   4096
#define EFI_PAGE_MASK   0xFFF
#define EFI_PAGE_SHIFT  12

#define EFI_SIZE_TO_PAGES(a)  \
    ( ((a) >> EFI_PAGE_SHIFT) + ((a) & EFI_PAGE_MASK ? 1 : 0) )

#endif