summaryrefslogtreecommitdiffstats
path: root/MdePkg/Include/Ppi/LoadFile.h
blob: 96955f764a9019988fa83db2b06764e7372e8a56 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
/** @file
  Load image file from fv to memory. 

  Copyright (c) 2006 - 2008, Intel Corporation                                                         
  All rights reserved. This program and the accompanying materials                          
  are licensed and made available under the terms and conditions of the BSD License         
  which accompanies this distribution.  The full text of the license may be found at        
  http://opensource.org/licenses/bsd-license.php                                            

  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,                     
  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.             

  @par Revision Reference:
  This PPI is defined in PI Version 1.00.

**/

#ifndef __LOAD_FILE_PPI_H__
#define __LOAD_FILE_PPI_H__

#define EFI_PEI_LOAD_FILE_PPI_GUID \
  { 0xb9e0abfe, 0x5979, 0x4914, { 0x97, 0x7f, 0x6d, 0xee, 0x78, 0xc2, 0x78, 0xa6 } }


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.
  
  @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.

  @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.
   
**/
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
);


/**
  @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.
  
**/
struct _EFI_PEI_LOAD_FILE_PPI {
  EFI_PEI_LOAD_FILE LoadFile;
};

extern EFI_GUID gEfiPeiLoadFilePpiGuid;

#endif