Subversion Repositories HelenOS

Rev

Rev 2726 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2726 vana 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
}