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. All notable changes to this project will be documented in this file.
## Unlreleased - ??? ## 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 - Supervisor channels in threads will no longer include a wastful copy of the fiber in every
message across a thread. message across a thread.
- Allow passing a closure to `ev/thead` as well as a whole fiber. - 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) { void janet_os_mutex_init(JanetOSMutex *mutex) {
InitializeCriticalSection(mutex); InitializeCriticalSection((CRITICAL_SECTION *) mutex);
} }
void janet_os_mutex_deinit(JanetOSMutex *mutex) { void janet_os_mutex_deinit(JanetOSMutex *mutex) {
DeleteCriticalSection(mutex); DeleteCriticalSection((CRITICAL_SECTION *) mutex);
} }
void janet_os_mutex_lock(JanetOSMutex *mutex) { void janet_os_mutex_lock(JanetOSMutex *mutex) {
EnterCriticalSection(mutex); EnterCriticalSection((CRITICAL_SECTION *) mutex);
} }
void janet_os_mutex_unlock(JanetOSMutex *mutex) { void janet_os_mutex_unlock(JanetOSMutex *mutex) {
LeaveCriticalSection(mutex); LeaveCriticalSection((CRITICAL_SECTION *) mutex);
} }
#else #else

View File

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