*/
SCM active_asyncs; /* The thunks to be run at the next
safe point */
- SCM signal_asyncs; /* The pre-queued cells for signal handlers.
- */
unsigned int block_asyncs; /* Non-zero means that asyncs should
not be run. */
unsigned int pending_asyncs; /* Non-zero means that asyncs might be pending.
SCM_API void *scm_i_with_guile_and_parent (void *(*func)(void *), void *data,
SCM parent);
-/* Critical sections */
-
-/* XXX - every critical section needs to be examined and protected
- with scm_frame_critical_section, say.
-*/
-
-extern scm_i_pthread_mutex_t scm_i_critical_section_mutex;
-
-#define SCM_CRITICAL_SECTION_START \
- scm_i_pthread_mutex_lock (&scm_i_critical_section_mutex)
-#define SCM_CRITICAL_SECTION_END \
- scm_i_pthread_mutex_unlock (&scm_i_critical_section_mutex)
extern int scm_i_thread_go_to_sleep;
void scm_i_thread_wake_up (void);
void scm_i_thread_invalidate_freelists (void);
void scm_i_thread_sleep_for_gc (void);
-SCM_API void scm_i_frame_single_threaded (void);
void scm_threads_prehistory (SCM_STACKITEM *);
void scm_threads_init_first_thread (void);
SCM_API SCM scm_make_mutex (void);
SCM_API SCM scm_make_recursive_mutex (void);
SCM_API SCM scm_lock_mutex (SCM m);
+SCM_API void scm_frame_lock_mutex (SCM mutex);
SCM_API SCM scm_try_mutex (SCM m);
SCM_API SCM scm_unlock_mutex (SCM m);
SCM_API int scm_c_thread_exited_p (SCM thread);
SCM_API SCM scm_thread_exited_p (SCM thread);
-SCM_API void scm_frame_critical_section (void);
+SCM_API void scm_frame_critical_section (SCM mutex);
#define SCM_I_CURRENT_THREAD \
((scm_i_thread *) scm_i_pthread_getspecific (scm_i_thread_key))