]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Include/Library/DebugAgentLib.h
MdeModulePkg: Move CPU_EXCEPTION_INIT_DATA to UefiCpuPkg
[mirror_edk2.git] / MdeModulePkg / Include / Library / DebugAgentLib.h
index 5d1894f806e92ddc850a6ea4a04d28ecba71d92a..f44bc5c5635c646ff6893adc93c2f30202881f33 100644 (file)
@@ -1,42 +1,77 @@
 /** @file\r
   Debug Agent Library provide source-level debug capability.\r
 \r
-Copyright (c) 2010, Intel Corporation.  All rights reserved<BR>\r
-This program and the accompanying materials are licensed and made available under \r
-the terms and conditions of the BSD License that accompanies this distribution.  \r
-The full text of the license may be found at\r
-http://opensource.org/licenses/bsd-license.php.                                            \r
-\r
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,                     \r
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+Copyright (c) 2010 - 2012, Intel Corporation. All rights reserved.<BR>\r
+SPDX-License-Identifier: BSD-2-Clause-Patent\r
 \r
 **/\r
 \r
 #ifndef __DEBUG_AGENT_LIB_H__\r
 #define __DEBUG_AGENT_LIB_H__\r
 \r
-#define DEBUG_AGENT_INIT_PREMEM_SEC      1\r
-#define DEBUG_AGENT_INIT_POSTMEM_SEC     2\r
-#define DEBUG_AGENT_INIT_DXE_CORE        3\r
-#define DEBUG_AGENT_INIT_SMM             4\r
-#define DEBUG_AGENT_INIT_ENTER_SMI       5\r
-#define DEBUG_AGENT_INIT_EXIT_SMI        6\r
-#define DEBUG_AGENT_INIT_S3              7\r
+#define DEBUG_AGENT_INIT_PREMEM_SEC           1\r
+#define DEBUG_AGENT_INIT_POSTMEM_SEC          2\r
+#define DEBUG_AGENT_INIT_DXE_CORE             3\r
+#define DEBUG_AGENT_INIT_SMM                  4\r
+#define DEBUG_AGENT_INIT_ENTER_SMI            5\r
+#define DEBUG_AGENT_INIT_EXIT_SMI             6\r
+#define DEBUG_AGENT_INIT_S3                   7\r
+#define DEBUG_AGENT_INIT_DXE_AP               8\r
+#define DEBUG_AGENT_INIT_PEI                  9\r
+#define DEBUG_AGENT_INIT_DXE_LOAD             10\r
+#define DEBUG_AGENT_INIT_DXE_UNLOAD           11\r
+#define DEBUG_AGENT_INIT_THUNK_PEI_IA32TOX64  12\r
+\r
+//\r
+// Context for DEBUG_AGENT_INIT_POSTMEM_SEC\r
+//\r
+typedef struct {\r
+  UINTN    HeapMigrateOffset;\r
+  UINTN    StackMigrateOffset;\r
+} DEBUG_AGENT_CONTEXT_POSTMEM_SEC;\r
+\r
+/**\r
+  Caller provided function to be invoked at the end of InitializeDebugAgent().\r
+\r
+  Refer to the description for InitializeDebugAgent() for more details.\r
+\r
+  @param[in] Context    The first input parameter of InitializeDebugAgent().\r
+\r
+**/\r
+typedef\r
+VOID\r
+(EFIAPI *DEBUG_AGENT_CONTINUE)(\r
+  IN VOID        *Context\r
+  );\r
 \r
 /**\r
   Initialize debug agent.\r
 \r
-  This function is used to set up debug enviroment.\r
+  This function is used to set up debug environment to support source level debugging.\r
+  If certain Debug Agent Library instance has to save some private data in the stack,\r
+  this function must work on the mode that doesn't return to the caller, then\r
+  the caller needs to wrap up all rest of logic after InitializeDebugAgent() into one\r
+  function and pass it into InitializeDebugAgent(). InitializeDebugAgent() is\r
+  responsible to invoke the passing-in function at the end of InitializeDebugAgent().\r
+\r
+  If the parameter Function is not NULL, Debug Agent Library instance will invoke it by\r
+  passing in the Context to be its parameter.\r
+\r
+  If Function() is NULL, Debug Agent Library instance will return after setup debug\r
+  environment.\r
 \r
-  @param[in] InitFlag   Init flag is used to decide the initialize process.\r
-  @param[in] Context    Context needed according to InitFlag; it was optional.\r
+  @param[in] InitFlag     Init flag is used to decide the initialize process.\r
+  @param[in] Context      Context needed according to InitFlag; it was optional.\r
+  @param[in] Function     Continue function called by debug agent library; it was\r
+                          optional.\r
 \r
 **/\r
 VOID\r
 EFIAPI\r
 InitializeDebugAgent (\r
   IN UINT32                InitFlag,\r
-  IN VOID                  *Context  OPTIONAL\r
+  IN VOID                  *Context  OPTIONAL,\r
+  IN DEBUG_AGENT_CONTINUE  Function  OPTIONAL\r
   );\r
 \r
 /**\r
@@ -55,7 +90,7 @@ InitializeDebugAgent (
 BOOLEAN\r
 EFIAPI\r
 SaveAndSetDebugTimerInterrupt (\r
-  IN BOOLEAN                EnableStatus\r
+  IN BOOLEAN  EnableStatus\r
   );\r
 \r
 #endif\r