+//\r
+// Below is the detailed MEMORY_PROFILE_ACTION definition.\r
+//\r
+// 31 15 9 8 8 7 7 6 6 5-4 3 - 0\r
+// +----------------------------------------------+\r
+// |User | |Lib| |Re|Copy|Zero|Align|Type|Basic|\r
+// +----------------------------------------------+\r
+//\r
+\r
+//\r
+// Basic Action\r
+// 1 : AllocatePages\r
+// 2 : FreePages\r
+// 3 : AllocatePool\r
+// 4 : FreePool\r
+//\r
+#define MEMORY_PROFILE_ACTION_BASIC_MASK 0xF\r
+\r
+//\r
+// Extension\r
+//\r
+#define MEMORY_PROFILE_ACTION_EXTENSION_MASK 0xFFF0\r
+#define MEMORY_PROFILE_ACTION_EXTENSION_LIB_MASK 0x8000\r
+#define MEMORY_PROFILE_ACTION_EXTENSION_REALLOC_MASK 0x0200\r
+#define MEMORY_PROFILE_ACTION_EXTENSION_COPY_MASK 0x0100\r
+#define MEMORY_PROFILE_ACTION_EXTENSION_ZERO_MASK 0x0080\r
+#define MEMORY_PROFILE_ACTION_EXTENSION_ALIGN_MASK 0x0040\r
+#define MEMORY_PROFILE_ACTION_EXTENSION_MEM_TYPE_MASK 0x0030\r
+#define MEMORY_PROFILE_ACTION_EXTENSION_MEM_TYPE_BASIC 0x0000\r
+#define MEMORY_PROFILE_ACTION_EXTENSION_MEM_TYPE_RUNTIME 0x0010\r
+#define MEMORY_PROFILE_ACTION_EXTENSION_MEM_TYPE_RESERVED 0x0020\r
+\r
+//\r
+// Extension (used by memory allocation lib)\r
+//\r
+#define MEMORY_PROFILE_ACTION_LIB_ALLOCATE_PAGES 0x8001\r
+#define MEMORY_PROFILE_ACTION_LIB_ALLOCATE_RUNTIME_PAGES 0x8011\r
+#define MEMORY_PROFILE_ACTION_LIB_ALLOCATE_RESERVED_PAGES 0x8021\r
+#define MEMORY_PROFILE_ACTION_LIB_FREE_PAGES 0x8002\r
+#define MEMORY_PROFILE_ACTION_LIB_ALLOCATE_ALIGNED_PAGES 0x8041\r
+#define MEMORY_PROFILE_ACTION_LIB_ALLOCATE_ALIGNED_RUNTIME_PAGES 0x8051\r
+#define MEMORY_PROFILE_ACTION_LIB_ALLOCATE_ALIGNED_RESERVED_PAGES 0x8061\r
+#define MEMORY_PROFILE_ACTION_LIB_FREE_ALIGNED_PAGES 0x8042\r
+#define MEMORY_PROFILE_ACTION_LIB_ALLOCATE_POOL 0x8003\r
+#define MEMORY_PROFILE_ACTION_LIB_ALLOCATE_RUNTIME_POOL 0x8013\r
+#define MEMORY_PROFILE_ACTION_LIB_ALLOCATE_RESERVED_POOL 0x8023\r
+#define MEMORY_PROFILE_ACTION_LIB_FREE_POOL 0x8004\r
+#define MEMORY_PROFILE_ACTION_LIB_ALLOCATE_ZERO_POOL 0x8083\r
+#define MEMORY_PROFILE_ACTION_LIB_ALLOCATE_RUNTIME_ZERO_POOL 0x8093\r
+#define MEMORY_PROFILE_ACTION_LIB_ALLOCATE_RESERVED_ZERO_POOL 0x80a3\r
+#define MEMORY_PROFILE_ACTION_LIB_ALLOCATE_COPY_POOL 0x8103\r
+#define MEMORY_PROFILE_ACTION_LIB_ALLOCATE_RUNTIME_COPY_POOL 0x8113\r
+#define MEMORY_PROFILE_ACTION_LIB_ALLOCATE_RESERVED_COPY_POOL 0x8123\r
+#define MEMORY_PROFILE_ACTION_LIB_REALLOCATE_POOL 0x8203\r
+#define MEMORY_PROFILE_ACTION_LIB_REALLOCATE_RUNTIME_POOL 0x8213\r
+#define MEMORY_PROFILE_ACTION_LIB_REALLOCATE_RESERVED_POOL 0x8223\r
+\r
+//\r
+// User defined: 0x80000000~0xFFFFFFFF\r
+//\r
+// NOTE: User defined action MUST OR the basic action,\r
+// so that core can know the action is allocate or free,\r
+// and the type is pages (can be freed partially)\r
+// or pool (cannot be freed partially).\r
+//\r
+#define MEMORY_PROFILE_ACTION_USER_DEFINED_MASK 0x80000000\r
+\r