/*++ Copyright (c) 1998 Intel Corporation Module Name: lock.c Abstract: Implements FLOCK Revision History --*/ #include "lib.h" #pragma RUNTIME_CODE(RtAcquireLock) VOID RtAcquireLock ( IN FLOCK *Lock ) /*++ Routine Description: Raising to the task priority level of the mutual exclusion lock, and then acquires ownership of the lock. Arguments: Lock - The lock to acquire Returns: Lock owned --*/ { if (BS) { if (BS->RaiseTPL != NULL) { Lock->OwnerTpl = BS->RaiseTPL(Lock->Tpl); } } else { if (LibRuntimeRaiseTPL != NULL) { Lock->OwnerTpl = LibRuntimeRaiseTPL(Lock->Tpl); } } Lock->Lock += 1; ASSERT (Lock->Lock == 1); } #pragma RUNTIME_CODE(RtAcquireLock) VOID RtReleaseLock ( IN FLOCK *Lock ) /*++ Routine Description: Releases ownership of the mutual exclusion lock, and restores the previous task priority level. Arguments: Lock - The lock to release Returns: Lock unowned --*/ { EFI_TPL Tpl; Tpl = Lock->OwnerTpl; ASSERT(Lock->Lock == 1); Lock->Lock -= 1; if (BS) { if (BS->RestoreTPL != NULL) { BS->RestoreTPL (Tpl); } } else { if (LibRuntimeRestoreTPL != NULL) { LibRuntimeRestoreTPL(Tpl); } } }