EmbeddedPkg/Library: Add VirtualRealTimeClockLib

This is designed to be used on platforms where a a real RTC is not
available and relies on an RtcEpochSeconds variable having been set or,
if that is not the case, falls back to using the epoch embedded at
compilation time.

Note that, in order to keep things simple for the setting of the
compilation time variable, only GCC environments with UNIX-like shells
and where a 'date' command is available are meant to be supported for
now.

Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Pete Batard <pete@akeo.ie>
Reviewed-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
This commit is contained in:
Pete Batard
2019-02-04 12:47:36 +00:00
committed by Ard Biesheuvel
parent 1b261a705f
commit 64a17fadcb
3 changed files with 444 additions and 0 deletions

View File

@@ -0,0 +1,43 @@
#/** @file
#
# Implement virtual EFI RealTimeClock runtime services.
#
# Copyright (c) 2019, Pete Batard <pete@akeo.ie>
# Copyright (c) 2018, Andrei Warkentin <andrey.warkentin@gmail.com>
# Copyright (c) Microsoft Corporation. All rights reserved.
#
# This program and the accompanying materials
# are licensed and made available under the terms and conditions of the BSD License
# which accompanies this distribution. The full text of the license may be found at
# http://opensource.org/licenses/bsd-license.php
#
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
#
#**/
[Defines]
INF_VERSION = 0x0001001A
BASE_NAME = VirtualRealTimeClockLib
FILE_GUID = 1E27D461-78F3-4F7D-B1C2-F72384F13A6E
MODULE_TYPE = BASE
VERSION_STRING = 1.0
LIBRARY_CLASS = RealTimeClockLib
[Sources.common]
VirtualRealTimeClockLib.c
[Packages]
MdePkg/MdePkg.dec
EmbeddedPkg/EmbeddedPkg.dec
[LibraryClasses]
IoLib
DebugLib
TimerLib
TimeBaseLib
UefiRuntimeLib
# Current usage of this library expects GCC in a UNIX-like shell environment with the date command
[BuildOptions]
GCC:*_*_*_CC_FLAGS = -DBUILD_EPOCH=`date +%s`