Merge pull request #3755 from kumpera/async-reader-hardering-2
[mono.git] / mono / metadata / w32semaphore-win32.c
1 /*
2  * w32semaphore-win32.c: Runtime support for managed Semaphore on Win32
3  *
4  * Author:
5  *      Ludovic Henry (luhenry@microsoft.com)
6  *
7  * Licensed under the MIT license. See LICENSE file in the project root for full license information.
8  */
9
10 #include "w32semaphore.h"
11
12 #include <windows.h>
13 #include <winbase.h>
14
15 void
16 mono_w32semaphore_init (void)
17 {
18 }
19
20 gpointer
21 ves_icall_System_Threading_Semaphore_CreateSemaphore_internal (gint32 initialCount, gint32 maximumCount, MonoString *name, gint32 *error)
22
23         HANDLE sem;
24
25         sem = CreateSemaphore (NULL, initialCount, maximumCount, name ? mono_string_chars (name) : NULL);
26
27         *error = GetLastError ();
28
29         return sem;
30 }
31
32 MonoBoolean
33 ves_icall_System_Threading_Semaphore_ReleaseSemaphore_internal (gpointer handle, gint32 releaseCount, gint32 *prevcount)
34
35         return ReleaseSemaphore (handle, releaseCount, prevcount);
36 }
37
38 gpointer
39 ves_icall_System_Threading_Semaphore_OpenSemaphore_internal (MonoString *name, gint32 rights, gint32 *error)
40 {
41         HANDLE sem;
42
43         sem = OpenSemaphore (rights, FALSE, mono_string_chars (name));
44
45         *error = GetLastError ();
46
47         return sem;
48 }