* Sync up to trunk HEAD (r62975).
[reactos.git] / ntoskrnl / ke / gmutex.c
1 /*
2 * PROJECT: ReactOS Kernel
3 * LICENSE: GPL - See COPYING in the top level directory
4 * FILE: ntoskrnl/ke/gate.c
5 * PURPOSE: Implements Guarded Mutex
6 * PROGRAMMERS: Alex Ionescu (alex.ionescu@reactos.org)
7 * Filip Navara (navaraf@reactos.org)
8 */
9
10 /* INCLUDES ******************************************************************/
11
12 #include <ntoskrnl.h>
13 #define NDEBUG
14 #include <debug.h>
15
16 /* Undefine some macros we implement here */
17 #undef KeInitializeGuardedMutex
18 #undef KeAcquireGuardedMutex
19 #undef KeReleaseGuardedMutex
20 #undef KeAcquireGuardedMutexUnsafe
21 #undef KeReleaseGuardedMutexUnsafe
22 #undef KeTryToAcquireGuardedMutex
23
24 /* PUBLIC FUNCTIONS **********************************************************/
25
26 /*
27 * @implemented
28 */
29 VOID
30 FASTCALL
31 KeInitializeGuardedMutex(OUT PKGUARDED_MUTEX GuardedMutex)
32 {
33 /* Call the inline */
34 _KeInitializeGuardedMutex(GuardedMutex);
35 }
36
37 /*
38 * @implemented
39 */
40 VOID
41 FASTCALL
42 KeAcquireGuardedMutex(IN PKGUARDED_MUTEX GuardedMutex)
43 {
44 /* Call the inline */
45 _KeAcquireGuardedMutex(GuardedMutex);
46 }
47
48 /*
49 * @implemented
50 */
51 VOID
52 FASTCALL
53 KeReleaseGuardedMutex(IN OUT PKGUARDED_MUTEX GuardedMutex)
54 {
55 /* Call the inline */
56 _KeReleaseGuardedMutex(GuardedMutex);
57 }
58
59 /*
60 * @implemented
61 */
62 VOID
63 FASTCALL
64 KeAcquireGuardedMutexUnsafe(IN OUT PKGUARDED_MUTEX GuardedMutex)
65 {
66 /* Call the inline */
67 _KeAcquireGuardedMutexUnsafe(GuardedMutex);
68 }
69
70 /*
71 * @implemented
72 */
73 VOID
74 FASTCALL
75 KeReleaseGuardedMutexUnsafe(IN OUT PKGUARDED_MUTEX GuardedMutex)
76 {
77 /* Call the inline */
78 _KeReleaseGuardedMutexUnsafe(GuardedMutex);
79 }
80
81 /*
82 * @implemented
83 */
84 BOOLEAN
85 FASTCALL
86 KeTryToAcquireGuardedMutex(IN OUT PKGUARDED_MUTEX GuardedMutex)
87 {
88 /* Call the inline */
89 return _KeTryToAcquireGuardedMutex(GuardedMutex);
90 }
91
92 /**
93 * @name KeEnterGuardedRegion
94 *
95 * Enters a guarded region. This causes all (incl. special kernel) APCs
96 * to be disabled.
97 */
98 VOID
99 NTAPI
100 _KeEnterGuardedRegion(VOID)
101 {
102 /* Use the inlined version */
103 KeEnterGuardedRegion();
104 }
105
106 /**
107 * @name KeLeaveGuardedRegion
108 *
109 * Leaves a guarded region and delivers pending APCs if possible.
110 */
111 VOID
112 NTAPI
113 _KeLeaveGuardedRegion(VOID)
114 {
115 /* Use the inlined version */
116 KeLeaveGuardedRegion();
117 }
118
119 /* EOF */