TianoCore EDK2 master
|
#include <Uefi.h>
#include <Protocol/MonotonicCounter.h>
#include <Guid/MtcVendor.h>
#include <Library/BaseLib.h>
#include <Library/UefiDriverEntryPoint.h>
#include <Library/UefiRuntimeLib.h>
#include <Library/DebugLib.h>
#include <Library/UefiBootServicesTableLib.h>
#include <Library/UefiRuntimeServicesTableLib.h>
Go to the source code of this file.
Functions | |
EFI_STATUS EFIAPI | MonotonicCounterDriverGetNextMonotonicCount (OUT UINT64 *Count) |
EFI_STATUS EFIAPI | MonotonicCounterDriverGetNextHighMonotonicCount (OUT UINT32 *HighCount) |
VOID EFIAPI | EfiMtcEventHandler (IN EFI_EVENT Event, IN VOID *Context) |
EFI_STATUS EFIAPI | MonotonicCounterDriverInitialize (IN EFI_HANDLE ImageHandle, IN EFI_SYSTEM_TABLE *SystemTable) |
Variables | |
EFI_HANDLE | mMonotonicCounterHandle = NULL |
UINT64 | mEfiMtc |
EFI_EVENT | mEfiMtcEvent |
Produce the UEFI boot service GetNextMonotonicCount() and runtime service GetNextHighMonotonicCount().
Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent
Definition in file MonotonicCounter.c.
Monotonic counter event handler. This handler updates the high part of monotonic counter.
Event | The event to handle. |
Context | The event context. |
Definition at line 182 of file MonotonicCounter.c.
EFI_STATUS EFIAPI MonotonicCounterDriverGetNextHighMonotonicCount | ( | OUT UINT32 * | HighCount | ) |
Returns the next high 32 bits of the platform's monotonic counter.
The GetNextHighMonotonicCount() function returns the next high 32 bits of the platform's monotonic counter. The platform's monotonic counter is comprised of two 32 bit quantities: the high 32 bits and the low 32 bits. During boot service time the low 32 bit value is volatile: it is reset to zero on every system reset and is increased by 1 on every call to GetNextMonotonicCount(). The high 32 bit value is non-volatile and is increased by 1 whenever the system resets, whenever GetNextHighMonotonicCount() is called, or whenever the low 32 bit count (returned by GetNextMonoticCount()) overflows. The GetNextMonotonicCount() function is only available at boot services time. If the operating system wishes to extend the platform monotonic counter to runtime, it may do so by utilizing GetNextHighMonotonicCount(). To do this, before calling ExitBootServices() the operating system would call GetNextMonotonicCount() to obtain the current platform monotonic count. The operating system would then provide an interface that returns the next count by: Adding 1 to the last count. Before the lower 32 bits of the count overflows, call GetNextHighMonotonicCount(). This will increase the high 32 bits of the platform's non-volatile portion of the monotonic count by 1.
This function may only be called at Runtime.
HighCount | Pointer to returned value. |
EFI_SUCCESS | The next high monotonic count was returned. |
EFI_INVALID_PARAMETER | HighCount is NULL. |
EFI_DEVICE_ERROR | The variable could not be saved due to a hardware failure. |
EFI_OUT_OF_RESOURCES | If variable service reports that not enough storage is available to hold the variable and its data. |
EFI_UNSUPPORTED | This call is not supported by this platform at the time the call is made. The platform should describe this runtime service as unsupported at runtime via an EFI_RT_PROPERTIES_TABLE configuration table. |
Definition at line 135 of file MonotonicCounter.c.
EFI_STATUS EFIAPI MonotonicCounterDriverGetNextMonotonicCount | ( | OUT UINT64 * | Count | ) |
Returns a monotonically increasing count for the platform.
This function returns a 64-bit value that is numerically larger then the last time the function was called. The platform monotonic counter is comprised of two parts: the high 32 bits and the low 32 bits. The low 32-bit value is volatile and is reset to zero on every system reset. It is increased by 1 on every call to GetNextMonotonicCount(). The high 32-bit value is nonvolatile and is increased by one on whenever the system resets or the low 32-bit counter overflows.
Count | Pointer to returned value. |
EFI_SUCCESS | The next monotonic count was returned. |
EFI_DEVICE_ERROR | The device is not functioning properly. |
EFI_INVALID_PARAMETER | Count is NULL. |
EFI_UNSUPPORTED | This function is called at runtime. |
Definition at line 58 of file MonotonicCounter.c.
EFI_STATUS EFIAPI MonotonicCounterDriverInitialize | ( | IN EFI_HANDLE | ImageHandle, |
IN EFI_SYSTEM_TABLE * | SystemTable | ||
) |
Entry point of monotonic counter driver.
ImageHandle | The image handle of this driver. |
SystemTable | The pointer of EFI_SYSTEM_TABLE. |
EFI_SUCCESS | The initialization is successful. |
Definition at line 203 of file MonotonicCounter.c.
UINT64 mEfiMtc |
Definition at line 30 of file MonotonicCounter.c.
EFI_EVENT mEfiMtcEvent |
Definition at line 35 of file MonotonicCounter.c.
EFI_HANDLE mMonotonicCounterHandle = NULL |
Definition at line 25 of file MonotonicCounter.c.