[sre] Wrap mono_image_create_token with HANDLE_FUNCTION_{ENTER,RETURN}
[mono-project.git] / mono / metadata / w32semaphore-win32.c
blobca4ec59b439a98aa00bc78b040584f9ceaea26e9
1 /**
2 * \file
3 * Runtime support for managed Semaphore on Win32
5 * Author:
6 * Ludovic Henry (luhenry@microsoft.com)
8 * Licensed under the MIT license. See LICENSE file in the project root for full license information.
9 */
11 #include "w32semaphore.h"
13 #include <windows.h>
14 #include <winbase.h>
16 void
17 mono_w32semaphore_init (void)
21 #if G_HAVE_API_SUPPORT(HAVE_CLASSIC_WINAPI_SUPPORT | HAVE_UWP_WINAPI_SUPPORT)
22 gpointer
23 ves_icall_System_Threading_Semaphore_CreateSemaphore_internal (gint32 initialCount, gint32 maximumCount, MonoString *name, gint32 *error)
25 HANDLE sem;
27 sem = CreateSemaphore (NULL, initialCount, maximumCount, name ? mono_string_chars (name) : NULL);
29 *error = GetLastError ();
31 return sem;
33 #endif /* G_HAVE_API_SUPPORT(HAVE_CLASSIC_WINAPI_SUPPORT | HAVE_UWP_WINAPI_SUPPORT) */
35 MonoBoolean
36 ves_icall_System_Threading_Semaphore_ReleaseSemaphore_internal (gpointer handle, gint32 releaseCount, gint32 *prevcount)
38 return ReleaseSemaphore (handle, releaseCount, prevcount);
41 gpointer
42 ves_icall_System_Threading_Semaphore_OpenSemaphore_internal (MonoString *name, gint32 rights, gint32 *error)
44 HANDLE sem;
46 sem = OpenSemaphore (rights, FALSE, mono_string_chars (name));
48 *error = GetLastError ();
50 return sem;