Imported Upstream version 3.0
[platform/upstream/gnu-efi.git] / lib / lock.c
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
24 InitializeLock (
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
61 AcquireLock (
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
86 ReleaseLock (
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 }