mirror of
https://github.com/acidanthera/audk.git
synced 2025-04-08 17:05:09 +02:00
This library supports a Boot Services table library implementation that allows code dependent upon UefiBootServicesTableLib to operate in an isolated execution environment such as within the context of a host-based unit test framework. The unit test should initialize the Boot Services database with any required elements (e.g. protocols, events, handles, etc.) prior to the services being invoked by code under test. It is strongly recommended to clean any global databases (e.g. protocol, event, handles, etc.) after every unit test so the tests execute in a predictable manner from a clean state. This library is being moved here from PrmPkg so it can be made more generally available to other packages and improved upon for others use. Cc: Michael D Kinney <michael.d.kinney@intel.com> Cc: Sean Brogan <sean.brogan@microsoft.com> Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com> Reviewed-by: Michael D Kinney <michael.d.kinney@intel.com>
181 lines
5.4 KiB
C
181 lines
5.4 KiB
C
/** @file
|
|
Implementation of event and timer related services in the UEFI Boot Services table for use in unit tests.
|
|
|
|
Copyright (c) Microsoft Corporation
|
|
SPDX-License-Identifier: BSD-2-Clause-Patent
|
|
|
|
**/
|
|
|
|
#include "UnitTestUefiBootServicesTableLib.h"
|
|
|
|
/**
|
|
Creates an event.
|
|
|
|
@param Type The type of event to create and its mode and
|
|
attributes
|
|
@param NotifyTpl The task priority level of event notifications
|
|
@param NotifyFunction Pointer to the events notification function
|
|
@param NotifyContext Pointer to the notification functions context
|
|
corresponds to parameter "Context" in the
|
|
notification function
|
|
@param Event Pointer to the newly created event if the call
|
|
succeeds undefined otherwise
|
|
|
|
@retval EFI_SUCCESS The event structure was created
|
|
@retval EFI_INVALID_PARAMETER One of the parameters has an invalid value
|
|
@retval EFI_OUT_OF_RESOURCES The event could not be allocated
|
|
|
|
**/
|
|
EFI_STATUS
|
|
EFIAPI
|
|
UnitTestCreateEvent (
|
|
IN UINT32 Type,
|
|
IN EFI_TPL NotifyTpl,
|
|
IN EFI_EVENT_NOTIFY NotifyFunction, OPTIONAL
|
|
IN VOID *NotifyContext, OPTIONAL
|
|
OUT EFI_EVENT *Event
|
|
)
|
|
{
|
|
return EFI_NOT_AVAILABLE_YET;
|
|
}
|
|
|
|
/**
|
|
Sets the type of timer and the trigger time for a timer event.
|
|
|
|
@param UserEvent The timer event that is to be signaled at the
|
|
specified time
|
|
@param Type The type of time that is specified in
|
|
TriggerTime
|
|
@param TriggerTime The number of 100ns units until the timer
|
|
expires
|
|
|
|
@retval EFI_SUCCESS The event has been set to be signaled at the
|
|
requested time
|
|
@retval EFI_INVALID_PARAMETER Event or Type is not valid
|
|
|
|
**/
|
|
EFI_STATUS
|
|
EFIAPI
|
|
UnitTestSetTimer (
|
|
IN EFI_EVENT UserEvent,
|
|
IN EFI_TIMER_DELAY Type,
|
|
IN UINT64 TriggerTime
|
|
)
|
|
{
|
|
return EFI_NOT_AVAILABLE_YET;
|
|
}
|
|
|
|
/**
|
|
Stops execution until an event is signaled.
|
|
|
|
@param NumberOfEvents The number of events in the UserEvents array
|
|
@param UserEvents An array of EFI_EVENT
|
|
@param UserIndex Pointer to the index of the event which
|
|
satisfied the wait condition
|
|
|
|
@retval EFI_SUCCESS The event indicated by Index was signaled.
|
|
@retval EFI_INVALID_PARAMETER The event indicated by Index has a notification
|
|
function or Event was not a valid type
|
|
@retval EFI_UNSUPPORTED The current TPL is not TPL_APPLICATION
|
|
|
|
**/
|
|
EFI_STATUS
|
|
EFIAPI
|
|
UnitTestWaitForEvent (
|
|
IN UINTN NumberOfEvents,
|
|
IN EFI_EVENT *UserEvents,
|
|
OUT UINTN *UserIndex
|
|
)
|
|
{
|
|
return EFI_NOT_AVAILABLE_YET;
|
|
}
|
|
|
|
/**
|
|
Signals the event. Queues the event to be notified if needed.
|
|
|
|
@param UserEvent The event to signal .
|
|
|
|
@retval EFI_INVALID_PARAMETER Parameters are not valid.
|
|
@retval EFI_SUCCESS The event was signaled.
|
|
|
|
**/
|
|
EFI_STATUS
|
|
EFIAPI
|
|
UnitTestSignalEvent (
|
|
IN EFI_EVENT UserEvent
|
|
)
|
|
{
|
|
return EFI_NOT_AVAILABLE_YET;
|
|
}
|
|
|
|
/**
|
|
Closes an event and frees the event structure.
|
|
|
|
@param UserEvent Event to close
|
|
|
|
@retval EFI_INVALID_PARAMETER Parameters are not valid.
|
|
@retval EFI_SUCCESS The event has been closed
|
|
|
|
**/
|
|
EFI_STATUS
|
|
EFIAPI
|
|
UnitTestCloseEvent (
|
|
IN EFI_EVENT UserEvent
|
|
)
|
|
{
|
|
return EFI_NOT_AVAILABLE_YET;
|
|
}
|
|
|
|
/**
|
|
Check the status of an event.
|
|
|
|
@param UserEvent The event to check
|
|
|
|
@retval EFI_SUCCESS The event is in the signaled state
|
|
@retval EFI_NOT_READY The event is not in the signaled state
|
|
@retval EFI_INVALID_PARAMETER Event is of type EVT_NOTIFY_SIGNAL
|
|
|
|
**/
|
|
EFI_STATUS
|
|
EFIAPI
|
|
UnitTestCheckEvent (
|
|
IN EFI_EVENT UserEvent
|
|
)
|
|
{
|
|
return EFI_NOT_AVAILABLE_YET;
|
|
}
|
|
|
|
/**
|
|
Creates an event in a group.
|
|
|
|
@param Type The type of event to create and its mode and
|
|
attributes
|
|
@param NotifyTpl The task priority level of event notifications
|
|
@param NotifyFunction Pointer to the events notification function
|
|
@param NotifyContext Pointer to the notification functions context
|
|
corresponds to parameter "Context" in the
|
|
notification function
|
|
@param EventGroup GUID for EventGroup if NULL act the same as
|
|
gBS->CreateEvent().
|
|
@param Event Pointer to the newly created event if the call
|
|
succeeds undefined otherwise
|
|
|
|
@retval EFI_SUCCESS The event structure was created
|
|
@retval EFI_INVALID_PARAMETER One of the parameters has an invalid value
|
|
@retval EFI_OUT_OF_RESOURCES The event could not be allocated
|
|
|
|
**/
|
|
EFI_STATUS
|
|
EFIAPI
|
|
UnitTestCreateEventEx (
|
|
IN UINT32 Type,
|
|
IN EFI_TPL NotifyTpl,
|
|
IN EFI_EVENT_NOTIFY NotifyFunction, OPTIONAL
|
|
IN CONST VOID *NotifyContext, OPTIONAL
|
|
IN CONST EFI_GUID *EventGroup, OPTIONAL
|
|
OUT EFI_EVENT *Event
|
|
)
|
|
{
|
|
return EFI_NOT_AVAILABLE_YET;
|
|
}
|