Avoid including windows.h in janet.h for JanetOSMutex.

This commit is contained in:
Calvin Rose 2021-09-17 16:59:50 -05:00
parent 8cd57025a0
commit bf9b6b1301
3 changed files with 16 additions and 9 deletions

View File

@ -2,6 +2,8 @@
All notable changes to this project will be documented in this file.
## Unlreleased - ???
- Fix some marshalling bugs.
- Add optional Makefile target to install jpm as well.
- Supervisor channels in threads will no longer include a wastful copy of the fiber in every
message across a thread.
- Allow passing a closure to `ev/thead` as well as a whole fiber.

View File

@ -94,19 +94,19 @@ static int32_t janet_decref(JanetAbstractHead *ab) {
}
void janet_os_mutex_init(JanetOSMutex *mutex) {
InitializeCriticalSection(mutex);
InitializeCriticalSection((CRITICAL_SECTION *) mutex);
}
void janet_os_mutex_deinit(JanetOSMutex *mutex) {
DeleteCriticalSection(mutex);
DeleteCriticalSection((CRITICAL_SECTION *) mutex);
}
void janet_os_mutex_lock(JanetOSMutex *mutex) {
EnterCriticalSection(mutex);
EnterCriticalSection((CRITICAL_SECTION *) mutex);
}
void janet_os_mutex_unlock(JanetOSMutex *mutex) {
LeaveCriticalSection(mutex);
LeaveCriticalSection((CRITICAL_SECTION *) mutex);
}
#else

View File

@ -330,11 +330,16 @@ typedef struct {
/* Some extra includes if EV is enabled */
#ifdef JANET_EV
#ifdef JANET_WINDOWS
#ifdef JANET_NET
#include <winsock2.h>
#endif
#include <windows.h>
typedef CRITICAL_SECTION JanetOSMutex;
typedef struct JanetDudCriticalSection {
/* Avoid including windows.h here - instead, create a structure of the same size */
/* Needs to be same size as crtical section see WinNT.h for CRITCIAL_SECTION definition */
void *debug_info;
long lock_count
long recursion_count;
void *owning_thread;
void *lock_semaphore;
unsigned long spin_count;
} JanetOSMutex;
#else
#include <pthread.h>
typedef pthread_mutex_t JanetOSMutex;