Home | History | Annotate | Download | only in PeimEntryPoint
      1 /** @file
      2   Entry point to a PEIM.
      3 
      4 Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>
      5 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 **/
     14 
     15 
     16 #include <PiPei.h>
     17 
     18 
     19 #include <Library/PeimEntryPoint.h>
     20 #include <Library/DebugLib.h>
     21 
     22 /**
     23   The entry point of PE/COFF Image for a PEIM.
     24 
     25   This function is the entry point for a PEIM.  This function must call ProcessLibraryConstructorList()
     26   and ProcessModuleEntryPointList().  The return value from ProcessModuleEntryPointList() is returned.
     27   If _gPeimRevision is not zero and PeiServices->Hdr.Revision is less than _gPeimRevison, then ASSERT().
     28 
     29   @param  FileHandle  Handle of the file being invoked.
     30   @param  PeiServices Describes the list of possible PEI Services.
     31 
     32   @retval  EFI_SUCCESS   The PEIM executed normally.
     33   @retval  !EFI_SUCCESS  The PEIM failed to execute normally.
     34 **/
     35 EFI_STATUS
     36 EFIAPI
     37 _ModuleEntryPoint (
     38   IN EFI_PEI_FILE_HANDLE       FileHandle,
     39   IN CONST EFI_PEI_SERVICES    **PeiServices
     40   )
     41 {
     42   if (_gPeimRevision != 0) {
     43     //
     44     // Make sure that the PEI spec revision of the platform is >= PEI spec revision of the driver
     45     //
     46     ASSERT ((*PeiServices)->Hdr.Revision >= _gPeimRevision);
     47   }
     48 
     49   //
     50   // Call constructor for all libraries
     51   //
     52   ProcessLibraryConstructorList (FileHandle, PeiServices);
     53 
     54   //
     55   // Call the driver entry point
     56   //
     57   return ProcessModuleEntryPointList (FileHandle, PeiServices);
     58 }
     59 
     60 
     61 /**
     62   Required by the EBC compiler and identical in functionality to _ModuleEntryPoint().
     63 
     64   This function is required to call _ModuleEntryPoint() passing in FileHandle and PeiServices.
     65 
     66   @param  FileHandle  Handle of the file being invoked.
     67   @param  PeiServices Describes the list of possible PEI Services.
     68 
     69   @retval EFI_SUCCESS  The PEIM executed normally.
     70   @retval !EFI_SUCCESS The PEIM failed to execute normally.
     71 
     72 **/
     73 EFI_STATUS
     74 EFIAPI
     75 EfiMain (
     76   IN EFI_PEI_FILE_HANDLE       FileHandle,
     77   IN CONST EFI_PEI_SERVICES    **PeiServices
     78   )
     79 {
     80   return _ModuleEntryPoint (FileHandle, PeiServices);
     81 }
     82