123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 |
- /** @file
- An internal header file for the Unit Test instance of the UEFI Boot Services Table Library.
- This file includes common header files, defines internal structure and functions used by
- the library implementation.
- Copyright (c) Microsoft Corporation
- SPDX-License-Identifier: BSD-2-Clause-Patent
- **/
- #ifndef UEFI_BOOT_SERVICES_TABLE_LIB_UNIT_TEST_PROTOCOL_H_
- #define UEFI_BOOT_SERVICES_TABLE_LIB_UNIT_TEST_PROTOCOL_H_
- #include "UefiBootServicesTableLibUnitTest.h"
- #define EFI_HANDLE_SIGNATURE SIGNATURE_32('h','n','d','l')
- ///
- /// IHANDLE - contains a list of protocol handles
- ///
- typedef struct {
- UINTN Signature;
- /// All handles list of IHANDLE
- LIST_ENTRY AllHandles;
- /// List of PROTOCOL_INTERFACE's for this handle
- LIST_ENTRY Protocols;
- UINTN LocateRequest;
- /// The Handle Database Key value when this handle was last created or modified
- UINT64 Key;
- } IHANDLE;
- #define ASSERT_IS_HANDLE(a) ASSERT((a)->Signature == EFI_HANDLE_SIGNATURE)
- #define PROTOCOL_ENTRY_SIGNATURE SIGNATURE_32('p','r','t','e')
- ///
- /// PROTOCOL_ENTRY - each different protocol has 1 entry in the protocol
- /// database. Each handler that supports this protocol is listed, along
- /// with a list of registered notifies.
- ///
- typedef struct {
- UINTN Signature;
- /// Link Entry inserted to mProtocolDatabase
- LIST_ENTRY AllEntries;
- /// ID of the protocol
- EFI_GUID ProtocolID;
- /// All protocol interfaces
- LIST_ENTRY Protocols;
- /// Registered notification handlers
- LIST_ENTRY Notify;
- } PROTOCOL_ENTRY;
- #define PROTOCOL_INTERFACE_SIGNATURE SIGNATURE_32('p','i','f','c')
- ///
- /// PROTOCOL_INTERFACE - each protocol installed on a handle is tracked
- /// with a protocol interface structure
- ///
- typedef struct {
- UINTN Signature;
- /// Link on IHANDLE.Protocols
- LIST_ENTRY Link;
- /// Back pointer
- IHANDLE *Handle;
- /// Link on PROTOCOL_ENTRY.Protocols
- LIST_ENTRY ByProtocol;
- /// The protocol ID
- PROTOCOL_ENTRY *Protocol;
- /// The interface value
- VOID *Interface;
- /// OPEN_PROTOCOL_DATA list
- LIST_ENTRY OpenList;
- UINTN OpenListCount;
- } PROTOCOL_INTERFACE;
- #define OPEN_PROTOCOL_DATA_SIGNATURE SIGNATURE_32('p','o','d','l')
- typedef struct {
- UINTN Signature;
- /// Link on PROTOCOL_INTERFACE.OpenList
- LIST_ENTRY Link;
- EFI_HANDLE AgentHandle;
- EFI_HANDLE ControllerHandle;
- UINT32 Attributes;
- UINT32 OpenCount;
- } OPEN_PROTOCOL_DATA;
- #define PROTOCOL_NOTIFY_SIGNATURE SIGNATURE_32('p','r','t','n')
- ///
- /// PROTOCOL_NOTIFY - used for each register notification for a protocol
- ///
- typedef struct {
- UINTN Signature;
- PROTOCOL_ENTRY *Protocol;
- /// All notifications for this protocol
- LIST_ENTRY Link;
- /// Event to notify
- EFI_EVENT Event;
- /// Last position notified
- LIST_ENTRY *Position;
- } PROTOCOL_NOTIFY;
- typedef struct {
- EFI_GUID *Protocol;
- VOID *SearchKey;
- LIST_ENTRY *Position;
- PROTOCOL_ENTRY *ProtEntry;
- } LOCATE_POSITION;
- typedef
- IHANDLE *
- (*UNIT_TEST_GET_NEXT) (
- IN OUT LOCATE_POSITION *Position,
- OUT VOID **Interface
- );
- #endif
|