From c16b7fe71aa99d9bf27ca5d88e15274c39a7a559 Mon Sep 17 00:00:00 2001 From: Star Zeng Date: Wed, 29 Jun 2016 12:51:55 +0800 Subject: MdeModulePkg DxeCore: Add lock to pretect memory profile AllocInfo list Cc: Jiewen Yao Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Star Zeng Reviewed-by: Jiewen Yao --- MdeModulePkg/Core/Dxe/Mem/MemoryProfileRecord.c | 26 +++++++++++++++++++++++++ 1 file changed, 26 insertions(+) (limited to 'MdeModulePkg') diff --git a/MdeModulePkg/Core/Dxe/Mem/MemoryProfileRecord.c b/MdeModulePkg/Core/Dxe/Mem/MemoryProfileRecord.c index 1ba8488a0e..14c4959f9f 100644 --- a/MdeModulePkg/Core/Dxe/Mem/MemoryProfileRecord.c +++ b/MdeModulePkg/Core/Dxe/Mem/MemoryProfileRecord.c @@ -63,6 +63,7 @@ GLOBAL_REMOVE_IF_UNREFERENCED MEMORY_PROFILE_CONTEXT_DATA mMemoryProfileContext }; GLOBAL_REMOVE_IF_UNREFERENCED MEMORY_PROFILE_CONTEXT_DATA *mMemoryProfileContextPtr = NULL; +EFI_LOCK mMemoryProfileLock = EFI_INITIALIZE_LOCK_VARIABLE (TPL_NOTIFY); BOOLEAN mMemoryProfileGettingStatus = FALSE; BOOLEAN mMemoryProfileRecordingEnable = MEMORY_PROFILE_RECORDING_DISABLE; EFI_DEVICE_PATH_PROTOCOL *mMemoryProfileDriverPath; @@ -217,6 +218,28 @@ EDKII_MEMORY_PROFILE_PROTOCOL mProfileProtocol = { ProfileProtocolRecord, }; +/** + Acquire lock on mMemoryProfileLock. +**/ +VOID +CoreAcquireMemoryProfileLock ( + VOID + ) +{ + CoreAcquireLock (&mMemoryProfileLock); +} + +/** + Release lock on mMemoryProfileLock. +**/ +VOID +CoreReleaseMemoryProfileLock ( + VOID + ) +{ + CoreReleaseLock (&mMemoryProfileLock); +} + /** Return memory profile context. @@ -1383,6 +1406,7 @@ CoreUpdateProfile ( return EFI_UNSUPPORTED; } + CoreAcquireMemoryProfileLock (); switch (BasicAction) { case MemoryProfileActionAllocatePages: Status = CoreUpdateProfileAllocate (CallerAddress, Action, MemoryType, Size, Buffer, ActionString); @@ -1401,6 +1425,8 @@ CoreUpdateProfile ( Status = EFI_UNSUPPORTED; break; } + CoreReleaseMemoryProfileLock (); + return Status; } -- cgit v1.2.3