/** @file | |
This file implements CalculateCrc32 Boot Services as defined in | |
Platform Initialization specification 1.0 VOLUME 2 DXE Core Interface. | |
This Boot Services is in the Runtime Driver because this service is | |
also required by SetVirtualAddressMap() when the EFI System Table and | |
EFI Runtime Services Table are converted from physical address to | |
virtual addresses. This requires that the 32-bit CRC be recomputed. | |
Copyright (c) 2006 - 2017, Intel Corporation. All rights reserved.<BR> | |
SPDX-License-Identifier: BSD-2-Clause-Patent | |
**/ | |
#include <Uefi.h> | |
#include <Library/BaseLib.h> | |
/** | |
Calculate CRC32 for target data. | |
@param Data The target data. | |
@param DataSize The target data size. | |
@param CrcOut The CRC32 for target data. | |
@retval EFI_SUCCESS The CRC32 for target data is calculated successfully. | |
@retval EFI_INVALID_PARAMETER Some parameter is not valid, so the CRC32 is not | |
calculated. | |
**/ | |
EFI_STATUS | |
EFIAPI | |
RuntimeDriverCalculateCrc32 ( | |
IN VOID *Data, | |
IN UINTN DataSize, | |
OUT UINT32 *CrcOut | |
) | |
{ | |
if ((Data == NULL) || (DataSize == 0) || (CrcOut == NULL)) { | |
return EFI_INVALID_PARAMETER; | |
} | |
*CrcOut = CalculateCrc32 (Data, DataSize); | |
return EFI_SUCCESS; | |
} |