1 /*++ 2 3 Copyright (c) 1998 Intel Corporation 4 5 Module Name: 6 7 lock.c 8 9 Abstract: 10 11 Implements FLOCK 12 13 14 15 Revision History 16 17 --*/ 18 19 20 #include "lib.h" 21 22 23 VOID InitializeLock(IN OUT FLOCK * Lock,IN EFI_TPL Priority)24InitializeLock ( 25 IN OUT FLOCK *Lock, 26 IN EFI_TPL Priority 27 ) 28 /*++ 29 30 Routine Description: 31 32 Initialize a basic mutual exclusion lock. Each lock 33 provides mutual exclusion access at it's task priority 34 level. Since there is no-premption (at any TPL) or 35 multiprocessor support, acquiring the lock only consists 36 of raising to the locks TPL. 37 38 Note on a debug build the lock is acquired and released 39 to help ensure proper usage. 40 41 Arguments: 42 43 Lock - The FLOCK structure to initialize 44 45 Priority - The task priority level of the lock 46 47 48 Returns: 49 50 An initialized F Lock structure. 51 52 --*/ 53 { 54 Lock->Tpl = Priority; 55 Lock->OwnerTpl = 0; 56 Lock->Lock = 0; 57 } 58 59 60 VOID AcquireLock(IN FLOCK * Lock)61AcquireLock ( 62 IN FLOCK *Lock 63 ) 64 /*++ 65 66 Routine Description: 67 68 Raising to the task priority level of the mutual exclusion 69 lock, and then acquires ownership of the lock. 70 71 Arguments: 72 73 Lock - The lock to acquire 74 75 Returns: 76 77 Lock owned 78 79 --*/ 80 { 81 RtAcquireLock (Lock); 82 } 83 84 85 VOID ReleaseLock(IN FLOCK * Lock)86ReleaseLock ( 87 IN FLOCK *Lock 88 ) 89 /*++ 90 91 Routine Description: 92 93 Releases ownership of the mutual exclusion lock, and 94 restores the previous task priority level. 95 96 Arguments: 97 98 Lock - The lock to release 99 100 Returns: 101 102 Lock unowned 103 104 --*/ 105 { 106 RtReleaseLock (Lock); 107 } 108