Home | History | Annotate | Download | only in ResetRuntimeDxe
      1 /** @file
      2 
      3   Copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>
      4 
      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 #include <PiDxe.h>
     16 #include <Protocol/Reset.h>
     17 #include <Library/DebugLib.h>
     18 #include <Library/UefiDriverEntryPoint.h>
     19 #include <Library/UefiBootServicesTableLib.h>
     20 #include <Library/EfiResetSystemLib.h>
     21 
     22 
     23 /**
     24   Resets the entire platform.
     25 
     26   @param  ResetType             The type of reset to perform.
     27   @param  ResetStatus           The status code for the reset.
     28   @param  DataSize              The size, in bytes, of WatchdogData.
     29   @param  ResetData             For a ResetType of EfiResetCold, EfiResetWarm, or
     30                                 EfiResetShutdown the data buffer starts with a Null-terminated
     31                                 Unicode string, optionally followed by additional binary data.
     32 
     33 **/
     34 VOID
     35 EFIAPI
     36 ResetSystemViaLib (
     37   IN EFI_RESET_TYPE   ResetType,
     38   IN EFI_STATUS       ResetStatus,
     39   IN UINTN            DataSize,
     40   IN VOID             *ResetData OPTIONAL
     41   )
     42 {
     43   LibResetSystem (ResetType, ResetStatus, DataSize, ResetData);
     44   return;
     45 }
     46 
     47 
     48 
     49 EFI_STATUS
     50 EFIAPI
     51 InitializeReset (
     52   IN EFI_HANDLE        ImageHandle,
     53   IN EFI_SYSTEM_TABLE  *SystemTable
     54   )
     55 {
     56   EFI_STATUS  Status;
     57   EFI_HANDLE  Handle;
     58 
     59   LibInitializeResetSystem (ImageHandle, SystemTable);
     60 
     61   SystemTable->RuntimeServices->ResetSystem = ResetSystemViaLib;
     62 
     63   Handle = NULL;
     64   Status = gBS->InstallMultipleProtocolInterfaces (
     65                   &Handle,
     66                   &gEfiResetArchProtocolGuid,
     67                   NULL,
     68                   NULL
     69                   );
     70   ASSERT_EFI_ERROR (Status);
     71 
     72   return Status;
     73 }
     74 
     75