123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- /** @file
- EFI Deferred Procedure Call Protocol.
- Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>
- SPDX-License-Identifier: BSD-2-Clause-Patent
- **/
- #ifndef __DPC_H__
- #define __DPC_H__
- //
- // DPC Protocol GUID value
- //
- #define EFI_DPC_PROTOCOL_GUID \
- { \
- 0x480f8ae9, 0xc46, 0x4aa9, { 0xbc, 0x89, 0xdb, 0x9f, 0xba, 0x61, 0x98, 0x6 } \
- }
- //
- // Forward reference for pure ANSI compatibility
- //
- typedef struct _EFI_DPC_PROTOCOL EFI_DPC_PROTOCOL;
- /**
- Invoke a Deferred Procedure Call.
- @param DpcContext The pointer to the Deferred Procedure Call's context,
- which is implementation dependent.
- **/
- typedef
- VOID
- (EFIAPI *EFI_DPC_PROCEDURE)(
- IN VOID *DpcContext
- );
- /**
- Add a Deferred Procedure Call to the end of the DPC queue.
- @param This The protocol instance pointer.
- @param DpcTpl The EFI_TPL that the DPC should invoke.
- @param DpcProcedure The pointer to the DPC's function.
- @param DpcContext The pointer to the DPC's context. Passed to DpcProcedure
- when DpcProcedure is invoked.
- @retval EFI_SUCCESS The DPC was queued.
- @retval EFI_INVALID_PARAMETER DpcTpl is not a valid EFI_TPL.
- @retval EFI_INVALID_PARAMETER DpcProcedure is NULL.
- @retval EFI_OUT_OF_RESOURCES There are not enough resources available to
- add the DPC to the queue.
- **/
- typedef
- EFI_STATUS
- (EFIAPI *EFI_DPC_QUEUE_DPC)(
- IN EFI_DPC_PROTOCOL *This,
- IN EFI_TPL DpcTpl,
- IN EFI_DPC_PROCEDURE DpcProcedure,
- IN VOID *DpcContext OPTIONAL
- );
- /**
- Dispatch the queue of DPCs.
- DPCs with DpcTpl value greater than the current TPL value are queued, and then DPCs
- with DpcTpl value lower than the current TPL value are queued. All DPCs in the first
- group (higher DpcTpl values) are invoked before DPCs in the second group (lower DpcTpl values).
- @param This Protocol instance pointer.
- @retval EFI_SUCCESS One or more DPCs were invoked.
- @retval EFI_NOT_FOUND No DPCs were invoked.
- **/
- typedef
- EFI_STATUS
- (EFIAPI *EFI_DPC_DISPATCH_DPC)(
- IN EFI_DPC_PROTOCOL *This
- );
- ///
- /// DPC Protocol structure.
- ///
- struct _EFI_DPC_PROTOCOL {
- EFI_DPC_QUEUE_DPC QueueDpc;
- EFI_DPC_DISPATCH_DPC DispatchDpc;
- };
- ///
- /// DPC Protocol GUID variable.
- ///
- extern EFI_GUID gEfiDpcProtocolGuid;
- #endif
|