For the SmmChildDispatch protocol, the HandlerGuid\r
must be the GUID of SmmChildDispatch protocol.\r
@param Handler The SMI handler.\r
+ @param Context The context of the SMI handler.\r
+ If it is NOT NULL, it will be used to check what is registered.\r
+ @param ContextSize The size of the context in bytes.\r
+ If Context is NOT NULL, it will be used to check what is registered.\r
\r
@retval EFI_SUCCESS The original record is removed.\r
@retval EFI_NOT_FOUND There is no record for the HandlerGuid and handler.\r
SmiHandlerProfileUnregisterHandler (\r
IN SMI_HANDLER_PROFILE_PROTOCOL *This,\r
IN EFI_GUID *HandlerGuid,\r
- IN EFI_SMM_HANDLER_ENTRY_POINT2 Handler\r
+ IN EFI_SMM_HANDLER_ENTRY_POINT2 Handler,\r
+ IN VOID *Context, OPTIONAL\r
+ IN UINTN ContextSize OPTIONAL\r
);\r
\r
extern UINTN mFullSmramRangeCount;\r
//\r
#define MAX_POOL_INDEX (MAX_POOL_SHIFT - MIN_POOL_SHIFT + 1)\r
\r
+#define POOL_HEAD_SIGNATURE SIGNATURE_32('p','h','d','0')\r
+\r
typedef struct {\r
- UINTN Size;\r
- BOOLEAN Available;\r
- EFI_MEMORY_TYPE Type;\r
+ UINT32 Signature;\r
+ BOOLEAN Available;\r
+ EFI_MEMORY_TYPE Type;\r
+ UINTN Size;\r
} POOL_HEADER;\r
\r
+#define POOL_TAIL_SIGNATURE SIGNATURE_32('p','t','a','l')\r
+\r
+typedef struct {\r
+ UINT32 Signature;\r
+ UINT32 Reserved;\r
+ UINTN Size;\r
+} POOL_TAIL;\r
+\r
+#define POOL_OVERHEAD (sizeof(POOL_HEADER) + sizeof(POOL_TAIL))\r
+\r
+#define HEAD_TO_TAIL(a) \\r
+ ((POOL_TAIL *) (((CHAR8 *) (a)) + (a)->Size - sizeof(POOL_TAIL)));\r
+\r
typedef struct {\r
POOL_HEADER Header;\r
LIST_ENTRY Link;\r