/* * PROJECT: ReactOS Win32 Base API * LICENSE: GPL - See COPYING in the top level directory * FILE: dll/win32/kernel32/synch/critical.c * PURPOSE: Wrappers for the RTL Critical Section Implementation * PROGRAMMERS: Alex Ionescu (alex.ionescu@reactos.org) */ /* INCLUDES *****************************************************************/ #include #define NDEBUG #include /* FUNCTIONS *****************************************************************/ /* * @implemented */ VOID WINAPI InitializeCriticalSection(OUT LPCRITICAL_SECTION lpCriticalSection) { NTSTATUS Status; /* Initialize the critical section and raise an exception if we failed */ Status = RtlInitializeCriticalSection( (PRTL_CRITICAL_SECTION)lpCriticalSection); if (!NT_SUCCESS(Status)) RtlRaiseStatus(Status); } /* * @implemented */ BOOL WINAPI InitializeCriticalSectionAndSpinCount(OUT LPCRITICAL_SECTION lpCriticalSection, IN DWORD dwSpinCount) { NTSTATUS Status; /* Initialize the critical section */ Status = RtlInitializeCriticalSectionAndSpinCount( (PRTL_CRITICAL_SECTION)lpCriticalSection, dwSpinCount); if (!NT_SUCCESS(Status)) { /* Set failure code */ SetLastErrorByStatus(Status); return FALSE; } /* Success */ return TRUE; } /* * @implemented */ BOOL WINAPI InitializeCriticalSectionEx(OUT LPCRITICAL_SECTION lpCriticalSection, IN DWORD dwSpinCount, IN DWORD flags ) { NTSTATUS Status; /* FIXME: Flags ignored */ /* Initialize the critical section */ Status = RtlInitializeCriticalSectionAndSpinCount( (PRTL_CRITICAL_SECTION)lpCriticalSection, dwSpinCount); if (!NT_SUCCESS(Status)) { /* Set failure code */ SetLastErrorByStatus(Status); return FALSE; } /* Success */ return TRUE; } /* EOF */