aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/include/janet.h
diff options
context:
space:
mode:
authorCalvin Rose <calsrose@gmail.com>2021-08-20 17:57:23 -0500
committerCalvin Rose <calsrose@gmail.com>2021-08-20 17:57:23 -0500
commitc786a4cbeb8b4384111bde2fbe6113a7b2e06998 (patch)
treec10bf558390922aed61e3e70f3bc9962492e09c9 /src/include/janet.h
parentDecrement thread channel pointer during cleanup without adding to heap. (diff)
Expose JanetOSMutex to make abstract types easier to write.
Diffstat (limited to 'src/include/janet.h')
-rw-r--r--src/include/janet.h17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/include/janet.h b/src/include/janet.h
index 4027b672..efce9ede 100644
--- a/src/include/janet.h
+++ b/src/include/janet.h
@@ -317,6 +317,17 @@ typedef struct {
#include <stddef.h>
#include <stdio.h>
+/* Some extra includes if EV is enabled */
+#ifdef JANET_EV
+#ifdef JANET_WINDOWS
+#include <synchapi.h>
+typedef CRTICAL_SECTION JanetOSMutex;
+#else
+#include <pthread.h>
+typedef pthread_mutex_t JanetOSMutex;
+#endif
+#endif
+
#ifdef JANET_BSD
int _setjmp(jmp_buf);
JANET_NO_RETURN void _longjmp(jmp_buf, int);
@@ -1354,6 +1365,12 @@ JANET_API void *janet_abstract_threaded(const JanetAbstractType *atype, size_t s
JANET_API int32_t janet_abstract_incref(void *abst);
JANET_API int32_t janet_abstract_decref(void *abst);
+/* Expose some OS sync primitives to make portable abstract types easier to implement */
+JANET_API void janet_os_mutex_init(JanetOSMutex *mutex);
+JANET_API void janet_os_mutex_deinit(JanetOSMutex *mutex);
+JANET_API void janet_os_mutex_lock(JanetOSMutex *mutex);
+JANET_API void janet_os_mutex_unlock(JanetOSMutex *mutex);
+
/* Get last error from an IO operation */
JANET_API Janet janet_ev_lasterr(void);