Update MdePkg/Include/Ppi according to code review comments.

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@5818 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
xli24 2008-09-04 09:15:21 +00:00
parent e6422a369a
commit dafa11b191
9 changed files with 414 additions and 473 deletions

View File

@ -20,7 +20,6 @@
#ifndef __PEI_CPUIO_PPI_H__
#define __PEI_CPUIO_PPI_H__
#include <ProcessorBind.h>
#include <Pi/PiPeiCis.h>
#define EFI_PEI_CPU_IO_PPI_INSTALLED_GUID \
@ -52,12 +51,13 @@ typedef enum {
/**
Memory-based access services and I/O-based access services.
@param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation.
@param This Pointer to local data for the interface.
@param Width The width of the access. Enumerated in bytes.
@param Address The physical address of the access.
@param Count The number of accesses to perform.
@param Buffer A pointer to the buffer of data.
@param PeiServices An indirect pointer to the PEI Services Table
published by the PEI Foundation.
@param This Pointer to local data for the interface.
@param Width The width of the access. Enumerated in bytes.
@param Address The physical address of the access.
@param Count The number of accesses to perform.
@param Buffer A pointer to the buffer of data.
@retval EFI_SUCCESS The function completed successfully.
@retval EFI_NOT_YET_AVAILABLE The service has not been installed.
@ -66,8 +66,8 @@ typedef enum {
typedef
EFI_STATUS
(EFIAPI *EFI_PEI_CPU_IO_PPI_IO_MEM)(
IN EFI_PEI_SERVICES **PeiServices,
IN EFI_PEI_CPU_IO_PPI *This,
IN CONST EFI_PEI_SERVICES **PeiServices,
IN CONST EFI_PEI_CPU_IO_PPI *This,
IN EFI_PEI_CPU_IO_PPI_WIDTH Width,
IN UINT64 Address,
IN UINTN Count,
@ -80,7 +80,13 @@ EFI_STATUS
/// *******************************************************
///
typedef struct {
///
/// This service provides the various modalities of memory and I/O read.
///
EFI_PEI_CPU_IO_PPI_IO_MEM Read;
///
/// This service provides the various modalities of memory and I/O write.
///
EFI_PEI_CPU_IO_PPI_IO_MEM Write;
} EFI_PEI_CPU_IO_PPI_ACCESS;
@ -91,15 +97,15 @@ typedef struct {
@param This Pointer to local data for the interface.
@param Address The physical address of the access.
@return UINT8 An 8-bit value is returned from the I/O space.
@return An 8-bit value returned from the I/O space.
**/
typedef
UINT8
(EFIAPI *EFI_PEI_CPU_IO_PPI_IO_READ8)(
IN EFI_PEI_SERVICES **PeiServices,
IN EFI_PEI_CPU_IO_PPI *This,
IN UINT64 Address
IN CONST EFI_PEI_SERVICES **PeiServices,
IN CONST EFI_PEI_CPU_IO_PPI *This,
IN UINT64 Address
);
/**
@ -109,15 +115,15 @@ UINT8
@param This Pointer to local data for the interface.
@param Address The physical address of the access.
@return UINT16 A 16-bit value is returned from the I/O space.
@return A 16-bit value returned from the I/O space.
**/
typedef
UINT16
(EFIAPI *EFI_PEI_CPU_IO_PPI_IO_READ16)(
IN EFI_PEI_SERVICES **PeiServices,
IN EFI_PEI_CPU_IO_PPI *This,
IN UINT64 Address
IN CONST EFI_PEI_SERVICES **PeiServices,
IN CONST EFI_PEI_CPU_IO_PPI *This,
IN UINT64 Address
);
/**
@ -127,15 +133,15 @@ UINT16
@param This Pointer to local data for the interface.
@param Address The physical address of the access.
@return UINT32 A 32-bit value is returned from the I/O space.
@return A 32-bit value returned from the I/O space.
**/
typedef
UINT32
(EFIAPI *EFI_PEI_CPU_IO_PPI_IO_READ32)(
IN EFI_PEI_SERVICES **PeiServices,
IN EFI_PEI_CPU_IO_PPI *This,
IN UINT64 Address
IN CONST EFI_PEI_SERVICES **PeiServices,
IN CONST EFI_PEI_CPU_IO_PPI *This,
IN UINT64 Address
);
/**
@ -145,15 +151,15 @@ UINT32
@param This Pointer to local data for the interface.
@param Address The physical address of the access.
@return UINT64 A 64-bit value is returned from the I/O space.
@return A 64-bit value returned from the I/O space.
**/
typedef
UINT64
(EFIAPI *EFI_PEI_CPU_IO_PPI_IO_READ64)(
IN EFI_PEI_SERVICES **PeiServices,
IN EFI_PEI_CPU_IO_PPI *This,
IN UINT64 Address
IN CONST EFI_PEI_SERVICES **PeiServices,
IN CONST EFI_PEI_CPU_IO_PPI *This,
IN UINT64 Address
);
/**
@ -164,16 +170,14 @@ UINT64
@param Address The physical address of the access.
@param Data The data to write.
@return None
**/
typedef
VOID
(EFIAPI *EFI_PEI_CPU_IO_PPI_IO_WRITE8)(
IN EFI_PEI_SERVICES **PeiServices,
IN EFI_PEI_CPU_IO_PPI *This,
IN UINT64 Address,
IN UINT8 Data
IN CONST EFI_PEI_SERVICES **PeiServices,
IN CONST EFI_PEI_CPU_IO_PPI *This,
IN UINT64 Address,
IN UINT8 Data
);
/**
@ -184,16 +188,14 @@ VOID
@param Address The physical address of the access.
@param Data The data to write.
@return None
**/
typedef
VOID
(EFIAPI *EFI_PEI_CPU_IO_PPI_IO_WRITE16)(
IN EFI_PEI_SERVICES **PeiServices,
IN EFI_PEI_CPU_IO_PPI *This,
IN UINT64 Address,
IN UINT16 Data
IN CONST EFI_PEI_SERVICES **PeiServices,
IN CONST EFI_PEI_CPU_IO_PPI *This,
IN UINT64 Address,
IN UINT16 Data
);
/**
@ -204,16 +206,14 @@ VOID
@param Address The physical address of the access.
@param Data The data to write.
@return None
**/
typedef
VOID
(EFIAPI *EFI_PEI_CPU_IO_PPI_IO_WRITE32)(
IN EFI_PEI_SERVICES **PeiServices,
IN EFI_PEI_CPU_IO_PPI *This,
IN UINT64 Address,
IN UINT32 Data
IN CONST EFI_PEI_SERVICES **PeiServices,
IN CONST EFI_PEI_CPU_IO_PPI *This,
IN UINT64 Address,
IN UINT32 Data
);
/**
@ -224,248 +224,236 @@ VOID
@param Address The physical address of the access.
@param Data The data to write.
@return None
**/
typedef
VOID
(EFIAPI *EFI_PEI_CPU_IO_PPI_IO_WRITE64)(
IN EFI_PEI_SERVICES **PeiServices,
IN EFI_PEI_CPU_IO_PPI *This,
IN UINT64 Address,
IN UINT64 Data
IN CONST EFI_PEI_SERVICES **PeiServices,
IN CONST EFI_PEI_CPU_IO_PPI *This,
IN UINT64 Address,
IN UINT64 Data
);
/**
8-bit Memory read operations.
8-bit memory read operations.
@param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation.
@param This Pointer to local data for the interface.
@param Address The physical address of the access.
@return UINT8 An 8-bit value is returned from the memory space.
@return An 8-bit value returned from the memory space.
**/
typedef
UINT8
(EFIAPI *EFI_PEI_CPU_IO_PPI_MEM_READ8)(
IN EFI_PEI_SERVICES **PeiServices,
IN EFI_PEI_CPU_IO_PPI *This,
IN UINT64 Address
IN CONST EFI_PEI_SERVICES **PeiServices,
IN CONST EFI_PEI_CPU_IO_PPI *This,
IN UINT64 Address
);
/**
16-bit Memory read operations.
16-bit memory read operations.
@param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation.
@param This Pointer to local data for the interface.
@param Address The physical address of the access.
@return UINT16 A 16-bit value is returned from the memory space.
@return A 16-bit value returned from the memory space.
**/
typedef
UINT16
(EFIAPI *EFI_PEI_CPU_IO_PPI_MEM_READ16)(
IN EFI_PEI_SERVICES **PeiServices,
IN EFI_PEI_CPU_IO_PPI *This,
IN UINT64 Address
IN CONST EFI_PEI_SERVICES **PeiServices,
IN CONST EFI_PEI_CPU_IO_PPI *This,
IN UINT64 Address
);
/**
32-bit Memory read operations.
32-bit memory read operations.
@param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation.
@param This Pointer to local data for the interface.
@param Address The physical address of the access.
@return UINT32 A 32-bit value is returned from the memory space.
@return A 32-bit value returned from the memory space.
**/
typedef
UINT32
(EFIAPI *EFI_PEI_CPU_IO_PPI_MEM_READ32)(
IN EFI_PEI_SERVICES **PeiServices,
IN EFI_PEI_CPU_IO_PPI *This,
IN UINT64 Address
IN CONST EFI_PEI_SERVICES **PeiServices,
IN CONST EFI_PEI_CPU_IO_PPI *This,
IN UINT64 Address
);
/**
64-bit Memory read operations.
64-bit memory read operations.
@param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation.
@param This Pointer to local data for the interface.
@param Address The physical address of the access.
@return UINT64 A 64-bit value is returned from the memory space.
@return A 64-bit value returned from the memory space.
**/
typedef
UINT64
(EFIAPI *EFI_PEI_CPU_IO_PPI_MEM_READ64)(
IN EFI_PEI_SERVICES **PeiServices,
IN EFI_PEI_CPU_IO_PPI *This,
IN UINT64 Address
IN CONST EFI_PEI_SERVICES **PeiServices,
IN CONST EFI_PEI_CPU_IO_PPI *This,
IN UINT64 Address
);
/**
8-bit Memory write operations.
8-bit memory write operations.
@param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation.
@param This Pointer to local data for the interface.
@param Address The physical address of the access.
@param Data The data to write.
@return None
**/
typedef
VOID
(EFIAPI *EFI_PEI_CPU_IO_PPI_MEM_WRITE8)(
IN EFI_PEI_SERVICES **PeiServices,
IN EFI_PEI_CPU_IO_PPI *This,
IN UINT64 Address,
IN UINT8 Data
IN CONST EFI_PEI_SERVICES **PeiServices,
IN CONST EFI_PEI_CPU_IO_PPI *This,
IN UINT64 Address,
IN UINT8 Data
);
/**
16-bit Memory write operations.
16-bit memory write operations.
@param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation.
@param This Pointer to local data for the interface.
@param Address The physical address of the access.
@param Data The data to write.
@return None
**/
typedef
VOID
(EFIAPI *EFI_PEI_CPU_IO_PPI_MEM_WRITE16)(
IN EFI_PEI_SERVICES **PeiServices,
IN EFI_PEI_CPU_IO_PPI *This,
IN UINT64 Address,
IN UINT16 Data
IN CONST EFI_PEI_SERVICES **PeiServices,
IN CONST EFI_PEI_CPU_IO_PPI *This,
IN UINT64 Address,
IN UINT16 Data
);
/**
32-bit Memory write operations.
32-bit memory write operations.
@param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation.
@param This Pointer to local data for the interface.
@param Address The physical address of the access.
@param Data The data to write.
@return None
**/
typedef
VOID
(EFIAPI *EFI_PEI_CPU_IO_PPI_MEM_WRITE32)(
IN EFI_PEI_SERVICES **PeiServices,
IN EFI_PEI_CPU_IO_PPI *This,
IN UINT64 Address,
IN UINT32 Data
IN CONST EFI_PEI_SERVICES **PeiServices,
IN CONST EFI_PEI_CPU_IO_PPI *This,
IN UINT64 Address,
IN UINT32 Data
);
/**
64-bit Memory write operations.
64-bit memory write operations.
@param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation.
@param This Pointer to local data for the interface.
@param Address The physical address of the access.
@param Data The data to write.
@return None
**/
typedef
VOID
(EFIAPI *EFI_PEI_CPU_IO_PPI_MEM_WRITE64)(
IN EFI_PEI_SERVICES **PeiServices,
IN EFI_PEI_CPU_IO_PPI *This,
IN UINT64 Address,
IN UINT64 Data
IN CONST EFI_PEI_SERVICES **PeiServices,
IN CONST EFI_PEI_CPU_IO_PPI *This,
IN UINT64 Address,
IN UINT64 Data
);
/**
@par Ppi Description:
EFI_PEI_CPU_IO_PPI provides a set of memory and I/O-based services.
The perspective of the services is that of the processor, not the bus or system.
@param Mem
Collection of memory-access services.
@param I/O
Collection of I/O-access services.
@param IoRead8
8-bit read service.
@param IoRead16
16-bit read service.
@param IoRead32
32-bit read service.
@param IoRead64
64-bit read service.
@param IoWrite8
8-bit write service.
@param IoWrite16
16-bit write service.
@param IoWrite32
32-bit write service.
@param IoWrite64
64-bit write service.
@param MemRead8
8-bit read service.
@param MemRead16
16-bit read service.
@param MemRead32
32-bit read service.
@param MemRead64
64-bit read service.
@param MemWrite8
8-bit write service.
@param MemWrite16
16-bit write service.
@param MemWrite32
32-bit write service.
@param MemWrite64
64-bit write service.
**/
///
/// EFI_PEI_CPU_IO_PPI provides a set of memory and I/O-based services.
/// The perspective of the services is that of the processor, not the bus or system.
///
struct _EFI_PEI_CPU_IO_PPI {
///
/// Collection of memory-access services.
///
EFI_PEI_CPU_IO_PPI_ACCESS Mem;
///
/// Collection of I/O-access services.
///
EFI_PEI_CPU_IO_PPI_ACCESS Io;
///
/// 8-bit I/O read service.
///
EFI_PEI_CPU_IO_PPI_IO_READ8 IoRead8;
///
/// 16-bit I/O read service.
///
EFI_PEI_CPU_IO_PPI_IO_READ16 IoRead16;
///
/// 32-bit I/O read service.
///
EFI_PEI_CPU_IO_PPI_IO_READ32 IoRead32;
///
/// 64-bit I/O read service.
///
EFI_PEI_CPU_IO_PPI_IO_READ64 IoRead64;
///
/// 8-bit I/O write service.
///
EFI_PEI_CPU_IO_PPI_IO_WRITE8 IoWrite8;
///
/// 16-bit I/O write service.
///
EFI_PEI_CPU_IO_PPI_IO_WRITE16 IoWrite16;
///
/// 32-bit I/O write service.
///
EFI_PEI_CPU_IO_PPI_IO_WRITE32 IoWrite32;
///
/// 64-bit I/O write service.
///
EFI_PEI_CPU_IO_PPI_IO_WRITE64 IoWrite64;
///
/// 8-bit memory read service.
///
EFI_PEI_CPU_IO_PPI_MEM_READ8 MemRead8;
///
/// 16-bit memory read service.
///
EFI_PEI_CPU_IO_PPI_MEM_READ16 MemRead16;
///
/// 32-bit memory read service.
///
EFI_PEI_CPU_IO_PPI_MEM_READ32 MemRead32;
///
/// 64-bit memory read service.
///
EFI_PEI_CPU_IO_PPI_MEM_READ64 MemRead64;
///
/// 8-bit memory write service.
///
EFI_PEI_CPU_IO_PPI_MEM_WRITE8 MemWrite8;
///
/// 16-bit memory write service.
///
EFI_PEI_CPU_IO_PPI_MEM_WRITE16 MemWrite16;
///
/// 32-bit memory write service.
///
EFI_PEI_CPU_IO_PPI_MEM_WRITE32 MemWrite32;
///
/// 64-bit memory write service.
///
EFI_PEI_CPU_IO_PPI_MEM_WRITE64 MemWrite64;
};

View File

@ -30,48 +30,44 @@ typedef struct _EFI_PEI_DECOMPRESS_PPI EFI_PEI_DECOMPRESS_PPI;
as a series of standard PI Firmware File Sections. The
required memory is allocated from permanent memory.
@param This Points to this instance of the
EFI_PEI_DECOMPRESS_PEI PPI. InputSection Points to
the compressed section.
@param OutputBuffer Holds the returned pointer to the
decompressed sections.
@param OutputSize Holds the returned size of the decompress
section streams.
@param This Points to this instance of the
EFI_PEI_DECOMPRESS_PEI PPI.
@param InputSection Points to the compressed section.
@param OutputBuffer Holds the returned pointer to the
decompressed sections.
@param OutputSize Holds the returned size of the decompress
section streams.
@retval EFI_SUCCESS The section was decompressed
successfully. OutputBuffer contains the
resulting data and OutputSize contains
the resulting size.
@retval EFI_OUT_OF_RESOURCES Unable to allocate sufficient
memory to hold the decompressed data.
@retval EFI_UNSUPPORTED The compression type specified
in the compression header is unsupported.
**/
typedef
EFI_STATUS
(EFIAPI *EFI_PEI_DECOMPRESS_DECOMPRESS)(
IN CONST EFI_PEI_DECOMPRESS_PPI *This,
IN CONST EFI_COMPRESSION_SECTION *InputSection,
OUT VOID **OutputBuffer,
OUT UINTN *OutputSize
IN CONST EFI_PEI_DECOMPRESS_PPI *This,
IN CONST EFI_COMPRESSION_SECTION *InputSection,
OUT VOID **OutputBuffer,
OUT UINTN *OutputSize
);
/**
@par Ppi Description:
This PPI's single member function decompresses a compression
encapsulated section. It is used by the PEI Foundation to
process sectioned files. Prior to the installation of this PPI,
compression sections will be ignored.
@param Decompress Decompress a single compression section in
a firmware file.
**/
///
/// This PPI's single member function decompresses a compression
/// encapsulated section. It is used by the PEI Foundation to
/// process sectioned files. Prior to the installation of this PPI,
/// compression sections will be ignored.
///
struct _EFI_PEI_DECOMPRESS_PPI {
///
/// Decompress a single compression section in a firmware file.
///
EFI_PEI_DECOMPRESS_DECOMPRESS Decompress;
};

View File

@ -31,6 +31,17 @@ typedef struct _EFI_DXE_IPL_PPI EFI_DXE_IPL_PPI;
The architectural PPI that the PEI Foundation invokes when
there are no additional PEIMs to invoke.
This function is invoked by the PEI Foundation.
The PEI Foundation will invoke this service when there are
no additional PEIMs to invoke in the system.
If this PPI does not exist, it is an error condition and
an ill-formed firmware set. The DXE IPL PPI should never
return after having been invoked by the PEI Foundation.
The DXE IPL PPI can do many things internally, including the following:
- Invoke the DXE entry point from a firmware volume
- Invoke the recovery processing modules
- Invoke the S3 resume modules
@param This Pointer to the DXE IPL PPI instance
@param PeiServices Pointer to the PEI Services Table.
@param HobList Pointer to the list of Hand-Off Block (HOB) entries.
@ -43,22 +54,20 @@ typedef struct _EFI_DXE_IPL_PPI EFI_DXE_IPL_PPI;
typedef
EFI_STATUS
(EFIAPI *EFI_DXE_IPL_ENTRY)(
IN EFI_DXE_IPL_PPI *This,
IN CONST EFI_DXE_IPL_PPI *This,
IN EFI_PEI_SERVICES **PeiServices,
IN EFI_PEI_HOB_POINTERS HobList
);
/**
@par Ppi Description:
Final service to be invoked by the PEI Foundation.
The DXE IPL PPI is responsible for locating and loading the DXE Foundation.
The DXE IPL PPI may use PEI services to locate and load the DXE Foundation.
@param Entry
The entry point to the DXE IPL PPI.
**/
///
/// Final service to be invoked by the PEI Foundation.
/// The DXE IPL PPI is responsible for locating and loading the DXE Foundation.
/// The DXE IPL PPI may use PEI services to locate and load the DXE Foundation.
///
struct _EFI_DXE_IPL_PPI {
///
/// The entry point to the DXE IPL PPI.
///
EFI_DXE_IPL_ENTRY Entry;
};

View File

@ -19,8 +19,8 @@
**/
#ifndef __END_OF_PEI_SIGNAL_PPI_H__
#define __END_OF_PEI_SIGNAL_PPI_H__
#ifndef __END_OF_PEI_PHASE_PPI_H__
#define __END_OF_PEI_PHASE_PPI_H__
#define EFI_PEI_END_OF_PEI_PHASE_PPI_GUID \
{ \

View File

@ -21,10 +21,9 @@
///
/// The GUID for this PPI is the same as the firmware volume format GUID.
/// can be EFI_FIRMWARE_FILE_SYSTEM2_GUID or the GUID for a user-defined format. The
/// EFI_FIRMWARE_FILE_SYSTEM2_GUID is the PI Firmware Volume format.
/// The FV format can be EFI_FIRMWARE_FILE_SYSTEM2_GUID or the GUID for a user-defined
/// format. The EFI_FIRMWARE_FILE_SYSTEM2_GUID is the PI Firmware Volume format.
///
typedef struct _EFI_PEI_FIRMWARE_VOLUME_PPI EFI_PEI_FIRMWARE_VOLUME_PPI;
@ -40,26 +39,25 @@ typedef struct _EFI_PEI_FIRMWARE_VOLUME_PPI EFI_PEI_FIRMWARE_VOLUME_PPI;
from the EFI_FIRMWARE_VOLUME_INFO_PPI.
@param This Points to this instance of the
EFI_PEI_FIRMWARE_VOLUME_PPI
@param Buffer Points to the start of the buffer.
@param BufferSize Size of the buffer.
@param FvHandle Points to the returned firmware volume
handle. The firmware volume handle must
be unique within the system.
@param This Points to this instance of the
EFI_PEI_FIRMWARE_VOLUME_PPI.
@param Buffer Points to the start of the buffer.
@param BufferSize Size of the buffer.
@param FvHandle Points to the returned firmware volume
handle. The firmware volume handle must
be unique within the system.
@retval EFI_SUCCESS Firmware volume handle.
@retval EFI_SUCCESS Firmware volume handle created.
@retval EFI_VOLUME_CORRUPTED Volume was corrupt.
**/
typedef
EFI_STATUS
(EFIAPI *EFI_PEI_FV_PROCESS_FV)(
IN CONST EFI_PEI_FIRMWARE_VOLUME_PPI *This,
IN CONST VOID *Buffer,
IN CONST UINTN BufferSize,
OUT EFI_PEI_FV_HANDLE *FvHandle
IN CONST EFI_PEI_FIRMWARE_VOLUME_PPI *This,
IN VOID *Buffer,
IN UINTN BufferSize,
OUT EFI_PEI_FV_HANDLE *FvHandle
);
/**
@ -68,29 +66,29 @@ EFI_STATUS
This service enables PEI modules to discover additional firmware files.
The FileHandle must be unique within the system.
@param This Points to this instance of the
EFI_PEI_FIRMWARE_VOLUME_PPI. SearchType A filter
to find only files of this type. Type
EFI_FV_FILETYPE_ALL causes no filtering to be
done.
@param FvHandle Handle of firmware volume in which to
search.
@param FileHandle Points to the current handle from which to
begin searching or NULL to start at the
beginning of the firmware volume. Updated
upon return to reflect the file found.
@param This Points to this instance of the
EFI_PEI_FIRMWARE_VOLUME_PPI.
@param SearchType A filter to find only files of this type. Type
EFI_FV_FILETYPE_ALL causes no filtering to be
done.
@param FvHandle Handle of firmware volume in which to
search.
@param FileHandle Points to the current handle from which to
begin searching or NULL to start at the
beginning of the firmware volume. Updated
upon return to reflect the file found.
@retval EFI_SUCCESS The file was found.
@retval EFI_NOT_FOUND The file was not found. FileHandle contains NULL.
**/
typedef EFI_STATUS
typedef
EFI_STATUS
(EFIAPI *EFI_PEI_FV_FIND_FILE_TYPE)(
IN CONST EFI_PEI_FIRMWARE_VOLUME_PPI *This,
IN CONST EFI_FV_FILETYPE SearchType,
IN CONST EFI_PEI_FV_HANDLE FvHandle,
IN OUT EFI_PEI_FILE_HANDLE *FileHandle
IN CONST EFI_PEI_FIRMWARE_VOLUME_PPI *This,
IN EFI_FV_FILETYPE SearchType,
IN EFI_PEI_FV_HANDLE FvHandle,
IN OUT EFI_PEI_FILE_HANDLE *FileHandle
);
@ -100,26 +98,21 @@ typedef EFI_STATUS
This service searches for files with a specific name, within
either the specified firmware volume or all firmware volumes.
@param This Points to this instance of the
EFI_PEI_FIRMWARE_VOLUME_PPI.
@param This Points to this instance of the
EFI_PEI_FIRMWARE_VOLUME_PPI.
@param FileName A pointer to the name of the file to find
within the firmware volume.
@param FvHandle Upon entry, the pointer to the firmware
volume to search or NULL if all firmware
volumes should be searched. Upon exit, the
actual firmware volume in which the file was
found.
@param FileHandle Upon exit, points to the found file's
handle or NULL if it could not be found.
@param FileName A pointer to the name of the file to find
within the firmware volume.
@param FvHandle Upon entry, the pointer to the firmware
volume to search or NULL if all firmware
volumes should be searched. Upon exit, the
actual firmware volume in which the file was
found.
@param FileHandle Upon exit, points to the found file's
handle or NULL if it could not be found.
@retval EFI_SUCCESS File was found.
@param EFI_NOT_FOUND File was not found.
@param EFI_INVALID_PARAMETER FvHandle or FileHandle or
@retval EFI_SUCCESS File was found.
@retval EFI_NOT_FOUND File was not found.
@retval EFI_INVALID_PARAMETER FvHandle or FileHandle or
FileName was NULL.
@ -127,10 +120,10 @@ typedef EFI_STATUS
typedef
EFI_STATUS
(EFIAPI *EFI_PEI_FV_FIND_FILE_NAME)(
IN CONST EFI_PEI_FIRMWARE_VOLUME_PPI *This,
IN CONST EFI_GUID *FileName,
IN CONST EFI_PEI_FV_HANDLE FvHandle,
OUT EFI_PEI_FILE_HANDLE *FileHandle
IN CONST EFI_PEI_FIRMWARE_VOLUME_PPI *This,
IN CONST EFI_GUID *FileName,
IN EFI_PEI_FV_HANDLE FvHandle,
OUT EFI_PEI_FILE_HANDLE *FileHandle
);
@ -141,109 +134,105 @@ EFI_STATUS
file, including its file name, type, attributes, starting
address and size.
@param This Points to this instance of the
EFI_PEI_FIRMWARE_VOLUME_PPI.
@param FileHandle Handle of the file.
@param FileInfo Upon exit, points to the file????s
information.
@param This Points to this instance of the
EFI_PEI_FIRMWARE_VOLUME_PPI.
@param FileHandle Handle of the file.
@param FileInfo Upon exit, points to the file's
information.
@retval EFI_SUCCESS File information returned.
@retval EFI_INVALID_PARAMETER If FileHandle does not
represent a valid file.
EFI_INVALID_PARAMETER If
FileInfo is NULL
@retval EFI_INVALID_PARAMETER If FileInfo is NULL.
**/
typedef
EFI_STATUS (EFIAPI *EFI_PEI_FV_GET_FILE_INFO)(
EFI_STATUS
(EFIAPI *EFI_PEI_FV_GET_FILE_INFO)(
IN CONST EFI_PEI_FIRMWARE_VOLUME_PPI *This,
IN CONST EFI_PEI_FILE_HANDLE FileHandle,
OUT EFI_FV_FILE_INFO *FileInfo
IN EFI_PEI_FILE_HANDLE FileHandle,
OUT EFI_FV_FILE_INFO *FileInfo
);
/**
This function returns information about the firmware
volume.
This function returns information about the firmware volume.
@param This Points to this instance of the
EFI_PEI_FIRMWARE_VOLUME_PPI.
@param FvHandle Handle to the firmware handle.
@param VolumeInfo Points to the returned firmware volume
information.
@retval EFI_SUCCESS Information returned
successfully.
@retval EFI_INVALID_PARAMETER FvHandle does not indicate a
valid firmware volume or VolumeInfo is NULL
@param This Points to this instance of the
EFI_PEI_FIRMWARE_VOLUME_PPI.
@param FvHandle Handle to the firmware handle.
@param VolumeInfo Points to the returned firmware volume
information.
@retval EFI_SUCCESS Information returned successfully.
@retval EFI_INVALID_PARAMETER FvHandle does not indicate a valid
firmware volume or VolumeInfo is NULL.
**/
typedef
EFI_STATUS (EFIAPI *EFI_PEI_FV_GET_INFO)(
IN CONST EFI_PEI_FIRMWARE_VOLUME_PPI *This,
IN CONST EFI_PEI_FV_HANDLE FvHandle,
OUT EFI_FV_INFO *VolumeInfo
EFI_STATUS
(EFIAPI *EFI_PEI_FV_GET_INFO)(
IN CONST EFI_PEI_FIRMWARE_VOLUME_PPI *This,
IN EFI_PEI_FV_HANDLE FvHandle,
OUT EFI_FV_INFO *VolumeInfo
);
/**
Find the next matching section in the firmware file.
This service enables PEI modules to discover sections of a given type within a valid file.
This service enables PEI modules to discover sections
of a given type within a valid file.
@param This Points to this instance of the
EFI_PEI_FIRMWARE_VOLUME_PPI.
@param SearchType A filter to find only sections of this
type.
@param FileHandle Handle of firmware file in which to
search.
@param SectionData Updated upon return to point to the
section found.
@param This Points to this instance of the
EFI_PEI_FIRMWARE_VOLUME_PPI.
@param SearchType A filter to find only sections of this
type.
@param FileHandle Handle of firmware file in which to
search.
@param SectionData Updated upon return to point to the
section found.
@retval EFI_SUCCESS Section was found.
@retval EFI_NOT_FOUND Section of the specified type was not
found. SectionData contains NULL.
**/
typedef
EFI_STATUS
(EFIAPI *EFI_PEI_FV_FIND_SECTION)(
IN CONST EFI_PEI_FIRMWARE_VOLUME_PPI *This,
IN CONST EFI_SECTION_TYPE SearchType,
IN CONST EFI_PEI_FILE_HANDLE FileHandle,
OUT VOID **SectionData
IN CONST EFI_PEI_FIRMWARE_VOLUME_PPI *This,
IN EFI_SECTION_TYPE SearchType,
IN EFI_PEI_FILE_HANDLE FileHandle,
OUT VOID **SectionData
);
/*
@par Ppi Description:
This PPI provides functions for accessing a memory-mapped firmware volume of a specific format.
@param ProcessVolume Process a firmware volume and create a volume handle.
@param FindFileByType Find all files of a specific type.
@param FindFileByName Find the file with a specific name.
@param GetFileInfo Return the information about a specific file
@param GetVolumeInfo Return the firmware volume attributes.
@param FindSectionByType Find all sections of a specific type.
**/
///
/// This PPI provides functions for accessing a memory-mapped firmware volume of a specific format.
///
struct _EFI_PEI_FIRMWARE_VOLUME_PPI {
///
/// Process a firmware volume and create a volume handle.
///
EFI_PEI_FV_PROCESS_FV ProcessVolume;
///
/// Find all files of a specific type.
///
EFI_PEI_FV_FIND_FILE_TYPE FindFileByType;
///
/// Find the file with a specific name.
///
EFI_PEI_FV_FIND_FILE_NAME FindFileByName;
///
/// Return the information about a specific file.
///
EFI_PEI_FV_GET_FILE_INFO GetFileInfo;
///
/// Return the firmware volume attributes.
///
EFI_PEI_FV_GET_INFO GetVolumeInfo;
///
/// Find all sections of a specific type.
///
EFI_PEI_FV_FIND_SECTION FindSectionByType;
} ;
};
extern EFI_GUID gEfiPeiFirmwareVolumePpiGuid;

View File

@ -26,39 +26,40 @@
typedef struct _EFI_PEI_FIRMWARE_VOLUME_INFO_PPI EFI_PEI_FIRMWARE_VOLUME_INFO_PPI;
/**
@par Ppi Description:
This PPI describes the location and format of a firmware volume.
The FvFormat can be EFI_FIRMWARE_FILE_SYSTEM2_GUID or the GUID for
a user-defined format. The EFI_FIRMWARE_FILE_SYSTEM2_GUID is
the PI Firmware Volume format.
@param FvFormat Unique identifier of the format of the memory-mapped firmware volume.
@param FvInfo Points to a buffer which allows the EFI_PEI_FIRMWARE_VOLUME_PPI to
process the volume. The format of this buffer is
specific to the FvFormat. For memory-mapped firmware volumes,
this typically points to the first byte of the firmware volume.
@param FvInfoSize Size of the data provided by FvInfo. For memory-mapped firmware volumes,
this is typically the size of the firmware volume.
@param ParentFvName If the firmware volume originally came from a firmware file,
then these point to the parent firmware volume
name and firmware volume file. If it did not originally come
from a firmware file, these should be NULL.
@param ParentFileName If the firmware volume originally came from a firmware file,
then these point to the parent firmware volume
name and firmware volume file. If it did not originally come
from a firmware file, these should be NULL.
**/
///
/// This PPI describes the location and format of a firmware volume.
/// The FvFormat can be EFI_FIRMWARE_FILE_SYSTEM2_GUID or the GUID for
/// a user-defined format. The EFI_FIRMWARE_FILE_SYSTEM2_GUID is
/// the PI Firmware Volume format.
///
struct _EFI_PEI_FIRMWARE_VOLUME_INFO_PPI {
///
/// Unique identifier of the format of the memory-mapped firmware volume.
///
EFI_GUID FvFormat;
///
/// Points to a buffer which allows the EFI_PEI_FIRMWARE_VOLUME_PPI to process
/// the volume. The format of this buffer is specific to the FvFormat.
/// For memory-mapped firmware volumes, this typically points to the first byte
/// of the firmware volume.
///
VOID *FvInfo;
///
/// Size of the data provided by FvInfo. For memory-mapped firmware volumes,
/// this is typically the size of the firmware volume.
///
UINT32 FvInfoSize;
///
/// If the firmware volume originally came from a firmware file, then these
/// point to the parent firmware volume name and firmware volume file.
/// If it did not originally come from a firmware file, these should be NULL.
///
EFI_GUID *ParentFvName;
///
/// If the firmware volume originally came from a firmware file, then these
/// point to the parent firmware volume name and firmware volume file.
/// If it did not originally come from a firmware file, these should be NULL.
///
EFI_GUID *ParentFileName;
};

View File

@ -51,75 +51,54 @@ typedef struct _EFI_PEI_GUIDED_SECTION_EXTRACTION_PPI EFI_PEI_GUIDED_SECTION_E
section's contents. Otherwise, *Buffer must be allocated
from PEI permanent memory.
@param This Indicates the
EFI_PEI_GUIDED_SECTION_EXTRACTION_PPI instance.
Buffer containing the input GUIDed section to be
processed. OutputBuffer OutputBuffer is
allocated from PEI permanent memory and contains
the new section stream.
@param This Indicates the EFI_PEI_GUIDED_SECTION_EXTRACTION_PPI
instance.
@param InputSection Buffer containing the input GUIDed section to be
processed.
@param OutputBuffer *OutputBuffer is allocated from PEI permanent memory
and contains the new section stream.
@param OutputSize A pointer to a caller-allocated UINTN in which
the size of *OutputBuffer allocation is stored.
If the function returns anything other than
EFI_SUCCESS, the value of *OutputSize is undefined.
@param AuthenticationStatus A pointer to a caller-allocated UINT32 that indicates
the authentication status of the output buffer.
If the input section's
GuidedSectionHeader.Attributes field has the
EFI_GUIDED_SECTION_AUTH_STATUS_VALID bit as clear,
*AuthenticationStatus must return zero. These bits
reflect the status of the extraction operation.
If the function returns anything other than EFI_SUCCESS,
the value of *AuthenticationStatus is undefined.
@param OutputSize A pointer to a caller-allocated
UINTN in which the size of *OutputBuffer
allocation is stored. If the function
returns anything other than EFI_SUCCESS,
the value of OutputSize is undefined.
@param AuthenticationStatus A pointer to a caller-allocated
UINT32 that indicates the
authentication status of the
output buffer. If the input
section's GuidedSectionHeader.
Attributes field has the
EFI_GUIDED_SECTION_AUTH_STATUS_VALID
bit as clear,
AuthenticationStatus must return
zero. These bits reflect the
status of the extraction
operation. If the function
returns anything other than
EFI_SUCCESS, the value of
AuthenticationStatus is
undefined.
@retval EFI_SUCCESS The InputSection was
successfully processed and the
@retval EFI_SUCCESS The InputSection was successfully processed and the
section contents were returned.
@retval EFI_OUT_OF_RESOURCES The system has insufficient
resources to process the request.
@retval EFI_INVALID_PARAMETER The GUID in InputSection does
not match this instance of the
@retval EFI_OUT_OF_RESOURCES The system has insufficient resources to process the request.
@retval EFI_INVALID_PARAMETER The GUID in InputSection does not match this instance of the
GUIDed Section Extraction PPI.
**/
typedef
EFI_STATUS
(EFIAPI *EFI_PEI_EXTRACT_GUIDED_SECTION)(
IN CONST EFI_PEI_GUIDED_SECTION_EXTRACTION_PPI *This,
IN CONST VOID *InputSection,
OUT VOID **OutputBuffer,
OUT UINTN *OutputSize,
OUT UINT32 *AuthenticationStatus
IN CONST EFI_PEI_GUIDED_SECTION_EXTRACTION_PPI *This,
IN CONST VOID *InputSection,
OUT VOID **OutputBuffer,
OUT UINTN *OutputSize,
OUT UINT32 *AuthenticationStatus
);
/**
@par Ppi Description:
If a GUID-defined section is encountered when doing section extraction,
the PEI Foundation or the EFI_PEI_FILE_LOADER_PPI instance
calls the appropriate instance of the GUIDed Section
Extraction PPI to extract the section stream contained
therein.
@param ExtractSection Takes the GUIDed section as input and
produces the section stream data. See
the ExtractSection() function
description.
**/
///
/// If a GUID-defined section is encountered when doing section extraction,
/// the PEI Foundation or the EFI_PEI_FILE_LOADER_PPI instance
/// calls the appropriate instance of the GUIDed Section
/// Extraction PPI to extract the section stream contained
/// therein.
///
struct _EFI_PEI_GUIDED_SECTION_EXTRACTION_PPI {
///
/// Takes the GUIDed section as input and
/// produces the section stream data.
///
EFI_PEI_EXTRACT_GUIDED_SECTION ExtractSection;
};

View File

@ -27,70 +27,48 @@ typedef struct _EFI_PEI_LOAD_FILE_PPI EFI_PEI_LOAD_FILE_PPI;
/**
Loads a PEIM into memory for subsequent execution.
This service is the single member function of EFI_LOAD_FILE_PPI. This service separates
image loading and relocating from the PEI Foundation.
This service is the single member function of EFI_LOAD_FILE_PPI.
This service separates image loading and relocating from the PEI Foundation.
@param This Interface pointer that implements
the Load File PPI instance.
@param FileHandle File handle of the file to load.
Type EFI_PEI_FILE_HANDLE is defined in
FfsFindNextFile().
@param ImageAddress Pointer to the address of the
loaded image.
@param ImageSize Pointer to the size of the loaded
image.
@param EntryPoint Pointer to the entry point of the
image.
@param AuthenticationState On exit, points to the attestation
authentication state of the image
or 0 if no attestation was
performed. The format of
AuthenticationState is defined in
EFI_PEI_GUIDED_SECTION_EXTRACTION_PPI.ExtractSection()
@retval EFI_SUCCESS The image was loaded successfully.
@param This Interface pointer that implements
the Load File PPI instance.
@param FileHandle File handle of the file to load.
@param ImageAddress Pointer to the address of the loaded image.
@param ImageSize Pointer to the size of the loaded image.
@param EntryPoint Pointer to the entry point of the image.
@param AuthenticationState On exit, points to the attestation
authentication state of the image
or 0 if no attestation was performed.
@retval EFI_SUCCESS The image was loaded successfully.
@retval EFI_OUT_OF_RESOURCES There was not enough memory.
@retval EFI_LOAD_ERROR There was no supported image in
the file.
@retval EFI_INVALID_PARAMETER EntryPoint was NULL.
Or FileHandle was not a valid firmware file handle.
@retval EFI_NOT_SUPPORTED An image requires relocations or
is not memory mapped.
@retval EFI_LOAD_ERROR There was no supported image in the file.
@retval EFI_INVALID_PARAMETER FileHandle was not a valid firmware file handle.
@retval EFI_INVALID_PARAMETER EntryPoint was NULL.
@retval EFI_NOT_SUPPORTED An image requires relocations or is not
memory mapped.
**/
typedef
EFI_STATUS
(EFIAPI *EFI_PEI_LOAD_FILE)(
IN CONST EFI_PEI_LOAD_FILE_PPI *This,
IN CONST EFI_PEI_FILE_HANDLE FileHandle,
OUT EFI_PHYSICAL_ADDRESS *ImageAddress,
OUT UINT64 *ImageSize,
OUT EFI_PHYSICAL_ADDRESS *EntryPoint,
OUT UINT32 *AuthenticationState
IN CONST EFI_PEI_LOAD_FILE_PPI *This,
IN EFI_PEI_FILE_HANDLE FileHandle,
OUT EFI_PHYSICAL_ADDRESS *ImageAddress,
OUT UINT64 *ImageSize,
OUT EFI_PHYSICAL_ADDRESS *EntryPoint,
OUT UINT32 *AuthenticationState
);
/**
@par Ppi Description:
This PPI is a pointer to the Load File service.
This service will be published by a PEIM. The PEI Foundation
will use this service to launch the known PEI module images.
@param LoadFile Loads a PEIM into memory for subsequent
execution. See the LoadFile() function
description.
**/
///
/// This PPI is a pointer to the Load File service.
/// This service will be published by a PEIM. The PEI Foundation
/// will use this service to launch the known PEI module images.
///
struct _EFI_PEI_LOAD_FILE_PPI {
///
/// Loads a PEIM into memory for subsequent execution.
///
EFI_PEI_LOAD_FILE LoadFile;
};

View File

@ -1,5 +1,5 @@
/** @file
The file descript the PPI which notifies other drivers
The file describes the PPI which notifies other drivers
of the PEIM being initialized by the PEI Dispatcher.
Copyright (c) 2006 - 2008, Intel Corporation
@ -26,23 +26,24 @@
typedef struct _EFI_PEI_LOADED_IMAGE_PPI EFI_PEI_LOADED_IMAGE_PPI;
/**
@par Ppi Description:
This interface is installed by the PEI Dispatcher after the image has been
loaded and after all security checks have been performed,
to notify other PEIMs of the files which are being loaded.
@param ImageAddress Address of the image at the address where it will be executed.
@param ImageSize Size of the image as it will be executed.
@param FileHandle File handle from which the image was loaded. Can be NULL,
indicating the image was not loaded from a handle.
**/
///
/// This interface is installed by the PEI Dispatcher after the image has been
/// loaded and after all security checks have been performed,
/// to notify other PEIMs of the files which are being loaded.
///
struct _EFI_PEI_LOADED_IMAGE_PPI {
///
/// Address of the image at the address where it will be executed.
///
EFI_PHYSICAL_ADDRESS ImageAddress;
///
/// Size of the image as it will be executed.
///
UINT64 ImageSize;
///
/// File handle from which the image was loaded.
/// Can be NULL, indicating the image was not loaded from a handle.
///
EFI_PEI_FILE_HANDLE FileHandle;
};