/** * \file * Runtime support for managed Semaphore on Win32 * * Author: * Ludovic Henry (luhenry@microsoft.com) * * Licensed under the MIT license. See LICENSE file in the project root for full license information. */ #include "w32semaphore.h" #include #include void mono_w32semaphore_init (void) { } #if G_HAVE_API_SUPPORT(HAVE_CLASSIC_WINAPI_SUPPORT | HAVE_UWP_WINAPI_SUPPORT) gpointer ves_icall_System_Threading_Semaphore_CreateSemaphore_internal (gint32 initialCount, gint32 maximumCount, MonoString *name, gint32 *error) { HANDLE sem; sem = CreateSemaphore (NULL, initialCount, maximumCount, name ? mono_string_chars (name) : NULL); *error = GetLastError (); return sem; } #endif /* G_HAVE_API_SUPPORT(HAVE_CLASSIC_WINAPI_SUPPORT | HAVE_UWP_WINAPI_SUPPORT) */ MonoBoolean ves_icall_System_Threading_Semaphore_ReleaseSemaphore_internal (gpointer handle, gint32 releaseCount, gint32 *prevcount) { return ReleaseSemaphore (handle, releaseCount, prevcount); } gpointer ves_icall_System_Threading_Semaphore_OpenSemaphore_internal (MonoString *name, gint32 rights, gint32 *error) { HANDLE sem; sem = OpenSemaphore (rights, FALSE, mono_string_chars (name)); *error = GetLastError (); return sem; }