From af1a266670d040d2f4083ff309d732d648afba2a Mon Sep 17 00:00:00 2001 From: Angelos Mouzakitis Date: Tue, 10 Oct 2023 14:33:42 +0000 Subject: Add submodule dependency files Change-Id: Iaf8d18082d3991dec7c0ebbea540f092188eb4ec --- roms/edk2/NetworkPkg/Include/Protocol/Dpc.h | 98 +++++++++++++++++++++++++++++ 1 file changed, 98 insertions(+) create mode 100644 roms/edk2/NetworkPkg/Include/Protocol/Dpc.h (limited to 'roms/edk2/NetworkPkg/Include/Protocol') diff --git a/roms/edk2/NetworkPkg/Include/Protocol/Dpc.h b/roms/edk2/NetworkPkg/Include/Protocol/Dpc.h new file mode 100644 index 000000000..5e50f6cf3 --- /dev/null +++ b/roms/edk2/NetworkPkg/Include/Protocol/Dpc.h @@ -0,0 +1,98 @@ +/** @file + + EFI Deferred Procedure Call Protocol. + +Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.
+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 -- cgit 1.2.3-korg