~galfy/helenos/bird-port-mainline

« back to all changes in this revision

Viewing changes to boot/arch/ia64/loader/gefi/lib/lock.c

  • Committer: Martin Decky
  • Date: 2009-08-04 11:19:19 UTC
  • Revision ID: martin@uranus.dsrg.hide.ms.mff.cuni.cz-20090804111919-evyclddlr3v5lhmp
Initial import

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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
}