4335a3f083c5db9aef29ae553b996e8ae14f5f57
[reactos.git] / reactos / dll / win32 / kernel32 / synch / critical.c
1 /*
2 * PROJECT: ReactOS Win32 Base API
3 * LICENSE: GPL - See COPYING in the top level directory
4 * FILE: dll/win32/kernel32/synch/critical.c
5 * PURPOSE: Wrappers for the RTL Critical Section Implementation
6 * PROGRAMMERS: Alex Ionescu (alex.ionescu@reactos.org)
7 */
8
9 /* INCLUDES *****************************************************************/
10
11 #include <k32.h>
12
13 #define NDEBUG
14 #include <debug.h>
15
16 /* FUNCTIONS *****************************************************************/
17
18 /*
19 * @implemented
20 */
21 VOID
22 WINAPI
23 InitializeCriticalSection(OUT LPCRITICAL_SECTION lpCriticalSection)
24 {
25 NTSTATUS Status;
26
27 /* Initialize the critical section and raise an exception if we failed */
28 Status = RtlInitializeCriticalSection(
29 (PRTL_CRITICAL_SECTION)lpCriticalSection);
30 if (!NT_SUCCESS(Status))
31 RtlRaiseStatus(Status);
32 }
33
34 /*
35 * @implemented
36 */
37 BOOL
38 WINAPI
39 InitializeCriticalSectionAndSpinCount(OUT LPCRITICAL_SECTION lpCriticalSection,
40 IN DWORD dwSpinCount)
41 {
42 NTSTATUS Status;
43
44 /* Initialize the critical section */
45 Status = RtlInitializeCriticalSectionAndSpinCount(
46 (PRTL_CRITICAL_SECTION)lpCriticalSection,
47 dwSpinCount);
48 if (!NT_SUCCESS(Status))
49 {
50 /* Set failure code */
51 SetLastErrorByStatus(Status);
52 return FALSE;
53 }
54
55 /* Success */
56 return TRUE;
57 }
58
59 /* EOF */