2 * w32semaphore-win32.c: Runtime support for managed Semaphore on Win32
5 * Ludovic Henry (luhenry@microsoft.com)
7 * Licensed under the MIT license. See LICENSE file in the project root for full license information.
10 #include "w32semaphore.h"
16 mono_w32semaphore_init (void)
20 #if G_HAVE_API_SUPPORT(HAVE_CLASSIC_WINAPI_SUPPORT | HAVE_UWP_WINAPI_SUPPORT)
22 ves_icall_System_Threading_Semaphore_CreateSemaphore_internal (gint32 initialCount
, gint32 maximumCount
, MonoString
*name
, gint32
*error
)
26 sem
= CreateSemaphore (NULL
, initialCount
, maximumCount
, name
? mono_string_chars (name
) : NULL
);
28 *error
= GetLastError ();
32 #endif /* G_HAVE_API_SUPPORT(HAVE_CLASSIC_WINAPI_SUPPORT | HAVE_UWP_WINAPI_SUPPORT) */
35 ves_icall_System_Threading_Semaphore_ReleaseSemaphore_internal (gpointer handle
, gint32 releaseCount
, gint32
*prevcount
)
37 return ReleaseSemaphore (handle
, releaseCount
, prevcount
);
41 ves_icall_System_Threading_Semaphore_OpenSemaphore_internal (MonoString
*name
, gint32 rights
, gint32
*error
)
45 sem
= OpenSemaphore (rights
, FALSE
, mono_string_chars (name
));
47 *error
= GetLastError ();