⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 efi.h

📁 xen 3.2.2 源码
💻 H
字号:
/* * This is a short summary of declarations and definitions from different * efi header files of Intels' EFI_Toolkit_1.10.14.62  * used for the minimal implementation in mini-os. * Changes: Dietmar Hahn <dietmar.hahn@fujitsu-siemens.com> * **************************************************************************** * Copyright (C) 2001-2004, Intel Corporation. * THIS SPECIFICATION IS PROVIDED "AS IS" WITH NO WARRANTIES WHATSOEVER, * INCLUDING ANY WARRANTY OF MERCHANTABILITY, NONINFRINGEMENT, FITNESS FOR * ANY PARTICULAR PURPOSE, OR ANY WARRANTY OTHERWISE ARISING OUT OF ANY * PROPOSAL, SPECIFICATION OR SAMPLE. Except for a limited copyright license * to copy this specification for internal use only, no license, express or * implied, by estoppel or otherwise, to any intellectual property rights is * granted herein.  Intel disclaims all liability, including liability for * infringement of any proprietary rights, relating to implementation of * information in this specification. Intel does not warrant or represent * that such implementation(s) will not infringe such rights.  Designers must * not rely on the absence or characteristics of any features or instructions * marked "reserved" or "undefined." Intel reserves these for future * definition and shall have no responsibility whatsoever for conflicts or * incompatibilities arising from future changes to them. * This document is an intermediate draft for comment only and is subject to * change without notice. Readers should not design products based on this * document. * Intel, the Intel logo, and Itanium are trademarks or registered trademarks * of Intel Corporation or its subsidiaries in the United States and other * countries. * Other names and brands may be claimed as the property of others. */#ifndef _EFI_H_#define _EFI_H_#include "types.h"#define EFIWARN(a)                      (a)#define EFI_ERROR(a)                    (((int64_t) a) < 0)#define EFI_SUCCESS                     0#define EFI_LOAD_ERROR                  EFIERR(1)#define EFI_INVALID_PARAMETER           EFIERR(2)#define EFI_UNSUPPORTED                 EFIERR(3)#define EFI_BAD_BUFFER_SIZE             EFIERR(4)#define EFI_BUFFER_TOO_SMALL            EFIERR(5)#define EFI_NOT_READY                   EFIERR(6)#define EFI_DEVICE_ERROR                EFIERR(7)#define EFI_WRITE_PROTECTED             EFIERR(8)#define EFI_OUT_OF_RESOURCES            EFIERR(9)#define EFI_VOLUME_CORRUPTED            EFIERR(10)#define EFI_VOLUME_FULL                 EFIERR(11)#define EFI_NO_MEDIA                    EFIERR(12)#define EFI_MEDIA_CHANGED               EFIERR(13)#define EFI_NOT_FOUND                   EFIERR(14)#define EFI_ACCESS_DENIED               EFIERR(15)#define EFI_NO_RESPONSE                 EFIERR(16)#define EFI_NO_MAPPING                  EFIERR(17)#define EFI_TIMEOUT                     EFIERR(18)#define EFI_NOT_STARTED                 EFIERR(19)#define EFI_ALREADY_STARTED             EFIERR(20)#define EFI_ABORTED                     EFIERR(21)#define EFI_ICMP_ERROR                  EFIERR(22)#define EFI_TFTP_ERROR                  EFIERR(23)#define EFI_PROTOCOL_ERROR              EFIERR(24)#define EFI_WARN_UNKOWN_GLYPH           EFIWARN(1)#define EFI_WARN_DELETE_FAILURE         EFIWARN(2)#define EFI_WARN_WRITE_FAILURE          EFIWARN(3)#define EFI_WARN_BUFFER_TOO_SMALL       EFIWARN(4)typedef uint64_t	efi_status_t;typedef void*		efi_handle_t;typedef void*		efi_event_t;typedef uint16_t	efi_char16_t;/* * Standard EFI table header */struct efi_table_header{	uint64_t	Signature;	// Revision of EFI table specification,	// upper 16 bit - major revision number	// lower 16 bit - minor revision number	uint32_t	Revision;	uint32_t	HeaderSize;	uint32_t	CRC32;	uint32_t	Reserved;};typedef struct efi_table_header efi_table_header_t;/* * EFI Time */typedef struct{          	uint16_t	Year;       /* 1998 - 20XX */	uint8_t		Month;      /* 1 - 12 */	uint8_t		Day;        /* 1 - 31 */	uint8_t		Hour;       /* 0 - 23 */	uint8_t		Minute;     /* 0 - 59 */	uint8_t		Second;     /* 0 - 59 */	uint8_t		Pad1;	uint32_t	Nanosecond; /* 0 - 999,999,999 */	int16_t		TimeZone;   /* -1440 to 1440 or 2047 */	uint8_t		Daylight;	uint8_t		Pad2;} efi_time_t;/* Bit definitions for efi_time_t.Daylight */#define EFI_TIME_ADJUST_DAYLIGHT    0x01#define EFI_TIME_IN_DAYLIGHT        0x02/* Value definition for efi_time_t.TimeZone */#define EFI_UNSPECIFIED_TIMEZONE    0x07FFtypedef struct{	uint32_t	Resolution;     /* 1e-6 parts per million */	uint32_t	Accuracy;       /* hertz */	uint8_t		SetsToZero;     /* Set clears sub-second time */} efi_time_capabilities_t;typedef efi_status_t (*efi_get_time_t) (efi_time_t*, efi_time_capabilities_t*);typedef efi_status_t (*efi_set_time_t) (efi_time_t*);typedef efi_status_t (*efi_get_wakeup_time_t) (uint8_t*, uint8_t*, efi_time_t*);typedef efi_status_t (*efi_set_wakeup_time_t) (uint8_t, efi_time_t*);/* * Memory * 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,		/* 0 */	EfiLoaderCode,	EfiLoaderData,	EfiBootServicesCode,	EfiBootServicesData,	EfiRuntimeServicesCode,	EfiRuntimeServicesData,		/* 6 */	EfiConventionalMemory,		/* 7 */	EfiUnusableMemory,	EfiACPIReclaimMemory,		/* 9 */	EfiACPIMemoryNVS,		/* 10, a */	EfiMemoryMappedIO,	EfiMemoryMappedIOPortSpace,	/* 12, c */	EfiPalCode,			/* 13, d */	EfiMaxMemoryType		/* 14, e */} efi_memory_type_t;/* 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  1typedef uint64_t efi_phys_addr_t;typedef uint64_t efi_virt_addr_t;typedef struct{	uint32_t	Type;           /* 32 bit padding */	efi_phys_addr_t	PhysicalStart;	efi_virt_addr_t	VirtualStart;	uint64_t	NumberOfPages;	uint64_t	Attribute;} efi_memory_descriptor_t;#define NextMemoryDescriptor(Ptr,Size)  ((efi_memory_descriptor_t*) (((uint8_t*) Ptr) + Size))typedef efi_status_t (*efi_set_virtual_address_map_t)	(		uint64_t MemoryMapSize,		uint64_t DescriptorSize,		uint32_t DescriptorVersion,		efi_memory_descriptor_t* VirtualMap	);typedef efi_status_t (*efi_convert_pointer_t)	(		uint64_t DebugDisposition,		void** Address	);/* * A GUID */typedef struct{          	uint32_t	Data1;	uint16_t	Data2;	uint16_t	Data3;	uint8_t		Data4[8]; } efi_guid_t;/* * EFI Configuration Table and GUID definitions */#define MPS_TABLE_GUID			\	{ 0xeb9d2d2f, 0x2d88, 0x11d3,	\		{ 0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d } }#define ACPI_TABLE_GUID			\	{ 0xeb9d2d30, 0x2d88, 0x11d3,	\		{ 0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d } }#define ACPI_20_TABLE_GUID  \	{ 0x8868e871, 0xe4f1, 0x11d3,	\		{ 0xbc, 0x22, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81 } }#define SMBIOS_TABLE_GUID    \	{ 0xeb9d2d31, 0x2d88, 0x11d3,	\		{ 0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d } }#define SAL_SYSTEM_TABLE_GUID    \	{ 0xeb9d2d32, 0x2d88, 0x11d3,	\		{ 0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d } }/* DIG64 Headless Console & Debug Port Table. */#define	HCDP_TABLE_GUID		\	{0xf951938d, 0x620b, 0x42ef,	\		{0x82, 0x79, 0xa8, 0x4b, 0x79, 0x61, 0x78, 0x98 } }typedef struct efi_configuration_table{	efi_guid_t	VendorGuid;	void*		VendorTable;} efi_configuration_table_t;/* * EFI platform variables */#define EFI_GLOBAL_VARIABLE     \    {	0x8BE4DF61, 0x93CA, 0x11d2, 0xAA, 0x0D, 0x00,	\	0xE0, 0x98, 0x03, 0x2B, 0x8C }/* Variable attributes */#define EFI_VARIABLE_NON_VOLATILE           0x00000001#define EFI_VARIABLE_BOOTSERVICE_ACCESS     0x00000002#define EFI_VARIABLE_RUNTIME_ACCESS         0x00000004/* Variable size limitation */#define EFI_MAXIMUM_VARIABLE_SIZE           1024typedef efi_status_t (*efi_get_variable_t)	(		efi_char16_t*	VariableName,		efi_guid_t	*VendorGuid,		uint32_t*	Attributes,		uint64_t*	DataSize,		void*		Data	);typedefefi_status_t (*efi_get_next_variable_name_t)	(		uint64_t*	VariableNameSize,		efi_char16_t*	VariableName,		efi_guid_t*	VendorGuid	);typedef efi_status_t (*efi_set_variable_t)	(		efi_char16_t*	VariableName,		efi_guid_t*	VendorGuid,		uint32_t	Attributes,		uint64_t	DataSize,		void*		Data	);/* * Misc */typedef enum{	EfiResetCold,	EfiResetWarm,	EfiResetShutdown} efi_reset_type_t;typedef efi_status_t (*efi_reset_system_t)	(		efi_reset_type_t	ResetType,		efi_status_t		ResetStatus,		uint64_t		DataSize,		efi_char16_t*		ResetData	);typedef efi_status_t (*efi_get_next_high_mono_count_t) (uint32_t* HighCount);/* * EFI Runtime Serivces Table */#define EFI_RUNTIME_SERVICES_SIGNATURE  0x56524553544e5552#define EFI_RUNTIME_SERVICES_REVISION ((EFI_SPECIFICATION_MAJOR_REVISION<<16) \					| (EFI_SPECIFICATION_MINOR_REVISION))typedef struct{	efi_table_header_t		Hdr;	/* Time services */	efi_get_time_t			GetTime;	efi_set_time_t			SetTime;	efi_get_wakeup_time_t		GetWakeupTime;	efi_set_wakeup_time_t		SetWakeupTime;	/* Virtual memory services */	efi_set_virtual_address_map_t	SetVirtualAddressMap;	efi_convert_pointer_t		ConvertPointer;	/* Variable serviers */	efi_get_variable_t		GetVariable;	efi_get_next_variable_name_t	GetNextVariableName;	efi_set_variable_t		SetVariable;	/* Misc */	efi_get_next_high_mono_count_t	GetNextHighMonotonicCount;	efi_reset_system_t		ResetSystem;} efi_runtime_services_t;#define EFI_SPECIFICATION_MAJOR_REVISION 1#define EFI_SYSTEM_TABLE_SIGNATURE      0x5453595320494249#define EFI_SYSTEM_TABLE_REVISION  ((EFI_SPECIFICATION_MAJOR_REVISION<<16) \					| (EFI_SPECIFICATION_MINOR_REVISION))struct efi_system_table{	efi_table_header_t	Hdr;	uint64_t	FirmwareVendor;		// phys addr of CHAR16	uint32_t	FirmwareRevision;	// Firmware vendor specific	efi_handle_t	ConsoleInHandle;	uint64_t	ConIn;	efi_handle_t	ConsoleOutHandle;	uint64_t	ConOut;	efi_handle_t	StandardErrorHandle;	uint64_t	StdErr;	uint64_t	RuntimeServices;	// phys addr	uint64_t	BootServices;		// phys addr	uint64_t	NumberOfTableEntries;	// Number of entries in Config	uint64_t	ConfigurationTable;	// phys addr of ConfigTable};typedef struct efi_system_table efi_system_table_t;#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) )void init_efi(void);int efi_get_time(efi_time_t* tmP);efi_status_t ia64_call_efi_physical(void *, ...);#endif /* _EFI_H_ */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -