// Module Globals\r
//\r
\r
+SPIN_LOCK mUnloadImageLock;\r
+\r
LOADED_IMAGE_PRIVATE_DATA *mCurrentImage = NULL;\r
\r
LOAD_PE32_IMAGE_PRIVATE_DATA mLoadPe32PrivateData = {\r
\r
mCurrentImage = Image;\r
\r
+ //\r
+ // Initialize spin lock\r
+ //\r
+ InitializeSpinLock (&mUnloadImageLock);\r
+\r
//\r
// Fill in DXE globals\r
//\r
{\r
EFI_STATUS Status;\r
LOADED_IMAGE_PRIVATE_DATA *Image;\r
- EFI_TPL OldTpl;\r
\r
//\r
// Prevent possible reentrance to this function\r
// for the same ImageHandle\r
//\r
- OldTpl = CoreRaiseTpl (TPL_NOTIFY);\r
+ if (!AcquireSpinLockOrFail (&mUnloadImageLock)) {\r
+ return EFI_UNSUPPORTED;\r
+ }\r
\r
Image = CoreLoadedImageInfo (ImageHandle);\r
if (Image == NULL ) {\r
}\r
\r
Done:\r
- CoreRestoreTpl (OldTpl);\r
+ ReleaseSpinLock (&mUnloadImageLock);\r
return Status;\r
}\r
\r