summaryrefslogtreecommitdiffstats
path: root/NetworkPkg/Include/Protocol
diff options
context:
space:
mode:
authorShenglei Zhang <shenglei.zhang@intel.com>2019-08-12 16:09:35 +0800
committerLiming Gao <liming.gao@intel.com>2019-08-15 16:42:43 +0800
commit593ecbe3006fb39965d3a5638c5e8a9acf01fa81 (patch)
tree98f5b6f0598af6d0dc84e3d7d201e60bbbcf87e8 /NetworkPkg/Include/Protocol
parent492a1db0b81ccab53a8c3782a6d84715779bd189 (diff)
downloadedk2-593ecbe3006fb39965d3a5638c5e8a9acf01fa81.tar.gz
edk2-593ecbe3006fb39965d3a5638c5e8a9acf01fa81.tar.bz2
edk2-593ecbe3006fb39965d3a5638c5e8a9acf01fa81.zip
NetworkPkg: Move Dpc.h from MdeModulePkg to NetworkPkg
Move Dpc.h from MdeModulePkg to NetworkPkg. And remove the dependency on MdeModulePkg.dec in INFs. https://bugzilla.tianocore.org/show_bug.cgi?id=1949 Cc: Siyuan Fu <siyuan.fu@intel.com> Cc: Jiaxin Wu <jiaxin.wu@intel.com> Signed-off-by: Shenglei Zhang <shenglei.zhang@intel.com> Reviewed-by: Siyuan Fu <siyuan.fu@intel.com>
Diffstat (limited to 'NetworkPkg/Include/Protocol')
-rw-r--r--NetworkPkg/Include/Protocol/Dpc.h98
1 files changed, 98 insertions, 0 deletions
diff --git a/NetworkPkg/Include/Protocol/Dpc.h b/NetworkPkg/Include/Protocol/Dpc.h
new file mode 100644
index 0000000000..1e1d0d316d
--- /dev/null
+++ b/NetworkPkg/Include/Protocol/Dpc.h
@@ -0,0 +1,98 @@
+/** @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 compatability
+//
+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