TianoCore EDK2 master
Loading...
Searching...
No Matches
MonotonicCounter.c File Reference

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
 

Detailed Description

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.

Function Documentation

◆ EfiMtcEventHandler()

VOID EFIAPI EfiMtcEventHandler ( IN EFI_EVENT  Event,
IN VOID *  Context 
)

Monotonic counter event handler. This handler updates the high part of monotonic counter.

Parameters
EventThe event to handle.
ContextThe event context.

Definition at line 182 of file MonotonicCounter.c.

◆ MonotonicCounterDriverGetNextHighMonotonicCount()

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.

Parameters
HighCountPointer to returned value.
Return values
EFI_SUCCESSThe next high monotonic count was returned.
EFI_INVALID_PARAMETERHighCount is NULL.
EFI_DEVICE_ERRORThe variable could not be saved due to a hardware failure.
EFI_OUT_OF_RESOURCESIf variable service reports that not enough storage is available to hold the variable and its data.
EFI_UNSUPPORTEDThis 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.

◆ MonotonicCounterDriverGetNextMonotonicCount()

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.

Parameters
CountPointer to returned value.
Return values
EFI_SUCCESSThe next monotonic count was returned.
EFI_DEVICE_ERRORThe device is not functioning properly.
EFI_INVALID_PARAMETERCount is NULL.
EFI_UNSUPPORTEDThis function is called at runtime.

Definition at line 58 of file MonotonicCounter.c.

◆ MonotonicCounterDriverInitialize()

EFI_STATUS EFIAPI MonotonicCounterDriverInitialize ( IN EFI_HANDLE  ImageHandle,
IN EFI_SYSTEM_TABLE SystemTable 
)

Entry point of monotonic counter driver.

Parameters
ImageHandleThe image handle of this driver.
SystemTableThe pointer of EFI_SYSTEM_TABLE.
Return values
EFI_SUCCESSThe initialization is successful.

Definition at line 203 of file MonotonicCounter.c.

Variable Documentation

◆ mEfiMtc

UINT64 mEfiMtc

Definition at line 30 of file MonotonicCounter.c.

◆ mEfiMtcEvent

EFI_EVENT mEfiMtcEvent

Definition at line 35 of file MonotonicCounter.c.

◆ mMonotonicCounterHandle

EFI_HANDLE mMonotonicCounterHandle = NULL

Definition at line 25 of file MonotonicCounter.c.