LoadFile.h revision 4ca9b6c4e7dbbcf94f21b54f41f761cefc6b1086
1/** @file
2  Load image file from fv to memory.
3
4  Copyright (c) 2006 - 2008, Intel Corporation
5  All rights reserved. This program and the accompanying materials
6  are licensed and made available under the terms and conditions of the BSD License
7  which accompanies this distribution.  The full text of the license may be found at
8  http://opensource.org/licenses/bsd-license.php
9
10  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
11  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
12
13  @par Revision Reference:
14  This PPI is defined in PI Version 1.00.
15
16**/
17
18#ifndef __LOAD_FILE_PPI_H__
19#define __LOAD_FILE_PPI_H__
20
21#define EFI_PEI_LOAD_FILE_PPI_GUID \
22  { 0xb9e0abfe, 0x5979, 0x4914, { 0x97, 0x7f, 0x6d, 0xee, 0x78, 0xc2, 0x78, 0xa6 } }
23
24
25typedef struct _EFI_PEI_LOAD_FILE_PPI EFI_PEI_LOAD_FILE_PPI;
26
27/**
28  Loads a PEIM into memory for subsequent execution.
29
30  This service is the single member function of EFI_LOAD_FILE_PPI. This service separates
31  image loading and relocating from the PEI Foundation.
32
33  @param This                 Interface pointer that implements
34                              the Load File PPI instance.
35
36  @param FileHandle           File handle of the file to load.
37                              Type EFI_PEI_FILE_HANDLE is defined in
38                              FfsFindNextFile().
39
40  @param ImageAddress         Pointer to the address of the
41                              loaded image.
42
43  @param ImageSize            Pointer to the size of the loaded
44                              image.
45
46  @param EntryPoint           Pointer to the entry point of the
47                              image.
48
49  @param AuthenticationState  On exit, points to the attestation
50                              authentication state of the image
51                              or 0 if no attestation was
52                              performed. The format of
53                              AuthenticationState is defined in
54                              EFI_PEI_GUIDED_SECTION_EXTRACTION_PPI.ExtractSection()
55
56
57  @retval EFI_SUCCESS         The image was loaded successfully.
58
59  @retval EFI_OUT_OF_RESOURCES  There was not enough memory.
60
61  @retval EFI_LOAD_ERROR      There was no supported image in
62                              the file.
63  @retval EFI_INVALID_PARAMETER   EntryPoint was NULL.
64                              Or FileHandle was not a valid firmware file handle.
65  @retval EFI_NOT_SUPPORTED   An image requires relocations or
66                              is not memory mapped.
67
68**/
69typedef
70EFI_STATUS
71(EFIAPI *EFI_PEI_LOAD_FILE)(
72  IN CONST  EFI_PEI_LOAD_FILE_PPI   *This,
73  IN CONST  EFI_PEI_FILE_HANDLE     FileHandle,
74  OUT       EFI_PHYSICAL_ADDRESS    *ImageAddress,
75  OUT       UINT64                  *ImageSize,
76  OUT       EFI_PHYSICAL_ADDRESS    *EntryPoint,
77  OUT       UINT32                  *AuthenticationState
78);
79
80
81/**
82  @par Ppi Description:
83  This PPI is a pointer to the Load File service.
84  This service will be published by a PEIM. The PEI Foundation
85  will use this service to launch the known PEI module images.
86
87
88  @param LoadFile  Loads a PEIM into memory for subsequent
89                   execution. See the LoadFile() function
90                   description.
91
92**/
93struct _EFI_PEI_LOAD_FILE_PPI {
94  EFI_PEI_LOAD_FILE LoadFile;
95};
96
97extern EFI_GUID gEfiPeiLoadFilePpiGuid;
98
99#endif
100