1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-05-09 15:10:29 +02:00

* __scm.h: Added hooks for threads to plugin to in ints protection

macros: SCM_THREAD_DEFER, SCM_THREAD_ALLOW, SCM_THREAD_REDEFER,
 	SCM_THREAD_ALLOW_1, SCM_THREAD_ALLOW_2.  Motivation: We don't want
 	the main code in these macros duplicated and spread over multiple
 	files. Renamed SCM_THREADS_SWITCHING_CODE ->
 	SCM_THREAD_SWITCHING_CODE.
This commit is contained in:
Mikael Djurfeldt 1996-11-02 20:52:39 +00:00
parent c51bfd813b
commit 25d3ee9d80

View file

@ -243,17 +243,31 @@ typedef long SCM_STACKITEM;
#ifndef USE_THREADS
#define SCM_THREADS_SWITCHING_CODE
#define SCM_THREAD_DEFER
#define SCM_THREAD_ALLOW
#define SCM_THREAD_REDEFER
#define SCM_THREAD_REALLOW_1
#define SCM_THREAD_REALLOW_2
#define SCM_THREAD_SWITCHING_CODE
#endif
extern unsigned int scm_async_clock;
#if 0
#define SCM_ASYNC_TICK \
{ \
if (0 == --scm_async_clock) \
scm_async_click (); \
SCM_THREADS_SWITCHING_CODE; \
} \
#else
#define SCM_ASYNC_TICK \
{ \
if (0 == --scm_async_clock) \
scm_async_click (); \
SCM_THREAD_SWITCHING_CODE; \
} \
#endif
#ifdef SCM_CAREFUL_INTS
#define SCM_CHECK_NOT_DISABLED \
@ -273,12 +287,14 @@ extern unsigned int scm_async_clock;
#define SCM_DEFER_INTS \
{ \
SCM_CHECK_NOT_DISABLED; \
SCM_THREAD_DEFER; \
scm_ints_disabled = 1; \
} \
#define SCM_ALLOW_INTS_ONLY \
{ \
SCM_THREAD_ALLOW; \
scm_ints_disabled = 0; \
} \
@ -286,6 +302,7 @@ extern unsigned int scm_async_clock;
#define SCM_ALLOW_INTS \
{ \
SCM_CHECK_NOT_ENABLED; \
SCM_THREAD_ALLOW; \
scm_ints_disabled = 0; \
SCM_ASYNC_TICK; \
} \
@ -293,16 +310,21 @@ extern unsigned int scm_async_clock;
#define SCM_REDEFER_INTS \
{ \
SCM_THREAD_REDEFER; \
++scm_ints_disabled; \
} \
#define SCM_REALLOW_INTS \
{ \
SCM_THREAD_REALLOW_1; \
--scm_ints_disabled; \
if (!scm_ints_disabled) \
{ \
SCM_THREAD_REALLOW_2; \
SCM_ASYNC_TICK; \
} \
} \