199767f8919635c4928607450d9e0abb932109ceToomas Soome/* $FreeBSD$ */
199767f8919635c4928607450d9e0abb932109ceToomas SoomeCopyright (c) 1999 - 2002 Intel Corporation. All rights reserved
199767f8919635c4928607450d9e0abb932109ceToomas SoomeThis software and associated documentation (if any) is furnished
199767f8919635c4928607450d9e0abb932109ceToomas Soomeunder a license and may only be used or copied in accordance
199767f8919635c4928607450d9e0abb932109ceToomas Soomewith the terms of the license. Except as permitted by such
199767f8919635c4928607450d9e0abb932109ceToomas Soomelicense, no part of this software or documentation may be
199767f8919635c4928607450d9e0abb932109ceToomas Soomereproduced, stored in a retrieval system, or transmitted in any
199767f8919635c4928607450d9e0abb932109ceToomas Soomeform or by any means without the express written consent of
199767f8919635c4928607450d9e0abb932109ceToomas SoomeIntel Corporation.
199767f8919635c4928607450d9e0abb932109ceToomas Soome EFI Protocols
199767f8919635c4928607450d9e0abb932109ceToomas SoomeRevision History
199767f8919635c4928607450d9e0abb932109ceToomas Soome// Device Path protocol
199767f8919635c4928607450d9e0abb932109ceToomas Soome { 0x9576e91, 0x6d3f, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} }
199767f8919635c4928607450d9e0abb932109ceToomas Soome// Block IO protocol
199767f8919635c4928607450d9e0abb932109ceToomas Soome { 0x964e5b21, 0x6459, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} }
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define EFI_BLOCK_IO_INTERFACE_REVISION 0x00010000
199767f8919635c4928607450d9e0abb932109ceToomas Soometypedef struct {
199767f8919635c4928607450d9e0abb932109ceToomas Soome// Disk Block IO protocol
199767f8919635c4928607450d9e0abb932109ceToomas Soome { 0xce345171, 0xba0b, 0x11d2, {0x8e, 0x4f, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} }
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define EFI_DISK_IO_INTERFACE_REVISION 0x00010000
199767f8919635c4928607450d9e0abb932109ceToomas Soome// Simple file system protocol
199767f8919635c4928607450d9e0abb932109ceToomas Soome { 0x964e5b22, 0x6459, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} }
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define EFI_FILE_IO_INTERFACE_REVISION 0x00010000
199767f8919635c4928607450d9e0abb932109ceToomas Soome// Open modes
199767f8919635c4928607450d9e0abb932109ceToomas Soome// File attributes
199767f8919635c4928607450d9e0abb932109ceToomas Soome// File information types
199767f8919635c4928607450d9e0abb932109ceToomas Soome { 0x9576e92, 0x6d3f, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} }
199767f8919635c4928607450d9e0abb932109ceToomas Soometypedef struct {
199767f8919635c4928607450d9e0abb932109ceToomas Soome// The FileName field of the EFI_FILE_INFO data structure is variable length.
199767f8919635c4928607450d9e0abb932109ceToomas Soome// Whenever code needs to know the size of the EFI_FILE_INFO data structure, it needs to
199767f8919635c4928607450d9e0abb932109ceToomas Soome// be the size of the data structure without the FileName field. The following macro
199767f8919635c4928607450d9e0abb932109ceToomas Soome// computes this size correctly no matter how big the FileName array is declared.
199767f8919635c4928607450d9e0abb932109ceToomas Soome// This is required to make the EFI_FILE_INFO data structure ANSI compilant.
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define SIZE_OF_EFI_FILE_INFO EFI_FIELD_OFFSET(EFI_FILE_INFO,FileName)
199767f8919635c4928607450d9e0abb932109ceToomas Soome { 0x9576e93, 0x6d3f, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} }
199767f8919635c4928607450d9e0abb932109ceToomas Soometypedef struct {
199767f8919635c4928607450d9e0abb932109ceToomas Soome// The VolumeLabel field of the EFI_FILE_SYSTEM_INFO data structure is variable length.
199767f8919635c4928607450d9e0abb932109ceToomas Soome// Whenever code needs to know the size of the EFI_FILE_SYSTEM_INFO data structure, it needs
199767f8919635c4928607450d9e0abb932109ceToomas Soome// to be the size of the data structure without the VolumeLable field. The following macro
199767f8919635c4928607450d9e0abb932109ceToomas Soome// computes this size correctly no matter how big the VolumeLable array is declared.
199767f8919635c4928607450d9e0abb932109ceToomas Soome// This is required to make the EFI_FILE_SYSTEM_INFO data structure ANSI compilant.
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define SIZE_OF_EFI_FILE_SYSTEM_INFO EFI_FIELD_OFFSET(EFI_FILE_SYSTEM_INFO,VolumeLabel)
199767f8919635c4928607450d9e0abb932109ceToomas Soome { 0xDB47D7D3,0xFE81, 0x11d3, {0x9A, 0x35, 0x00, 0x90, 0x27, 0x3F, 0xC1, 0x4D} }
199767f8919635c4928607450d9e0abb932109ceToomas Soometypedef struct {
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define SIZE_OF_EFI_FILE_SYSTEM_VOLUME_LABEL_INFO EFI_FIELD_OFFSET(EFI_FILE_SYSTEM_VOLUME_LABEL_INFO,VolumeLabel)
199767f8919635c4928607450d9e0abb932109ceToomas Soome// Load file protocol
199767f8919635c4928607450d9e0abb932109ceToomas Soome { 0x56EC3091, 0x954C, 0x11d2, {0x8E, 0x3F, 0x00, 0xA0, 0xC9, 0x69, 0x72, 0x3B} }
199767f8919635c4928607450d9e0abb932109ceToomas Soome// Device IO protocol
199767f8919635c4928607450d9e0abb932109ceToomas Soome { 0xaf6ac311, 0x84c3, 0x11d2, {0x8e, 0x3c, 0x00, 0xa0, 0xc9, 0x69, 0x72, 0x3b} }
199767f8919635c4928607450d9e0abb932109ceToomas Soometypedef enum {
199767f8919635c4928607450d9e0abb932109ceToomas Soome// Specification Change: Copy from MMIO to MMIO vs. MMIO to buffer, buffer to MMIO
199767f8919635c4928607450d9e0abb932109ceToomas Soome ( (UINT64) ( (((UINTN)bus) << 24) + (((UINTN)dev) << 16) + (((UINTN)func) << 8) + ((UINTN)reg) ))
199767f8919635c4928607450d9e0abb932109ceToomas Soometypedef struct {
199767f8919635c4928607450d9e0abb932109ceToomas Soometypedef enum {
199767f8919635c4928607450d9e0abb932109ceToomas Soome// Unicode Collation protocol
199767f8919635c4928607450d9e0abb932109ceToomas Soome { 0x1d85cd7f, 0xf43d, 0x11d2, {0x9a, 0xc, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define UNICODE_BYTE_ORDER_MARK (CHAR16)(0xfeff)
199767f8919635c4928607450d9e0abb932109ceToomas SoomeINTERFACE_DECL(_EFI_UNICODE_COLLATION_INTERFACE);
199767f8919635c4928607450d9e0abb932109ceToomas Soome IN struct _EFI_UNICODE_COLLATION_INTERFACE *This,
199767f8919635c4928607450d9e0abb932109ceToomas Soome IN struct _EFI_UNICODE_COLLATION_INTERFACE *This,
199767f8919635c4928607450d9e0abb932109ceToomas Soome IN struct _EFI_UNICODE_COLLATION_INTERFACE *This,
199767f8919635c4928607450d9e0abb932109ceToomas Soome IN struct _EFI_UNICODE_COLLATION_INTERFACE *This,
199767f8919635c4928607450d9e0abb932109ceToomas Soome IN struct _EFI_UNICODE_COLLATION_INTERFACE *This,
199767f8919635c4928607450d9e0abb932109ceToomas Soome IN struct _EFI_UNICODE_COLLATION_INTERFACE *This,
199767f8919635c4928607450d9e0abb932109ceToomas Soometypedef struct _EFI_UNICODE_COLLATION_INTERFACE {
199767f8919635c4928607450d9e0abb932109ceToomas Soome // for supporting fat volumes