Merge commit '8571dbde639e0ee9885bad49c9e180474bd23646'
authorAndy Wingo <wingo@pobox.com>
Thu, 28 Nov 2013 14:00:17 +0000 (15:00 +0100)
committerAndy Wingo <wingo@pobox.com>
Thu, 28 Nov 2013 14:00:17 +0000 (15:00 +0100)
Conflicts:
libguile/procprop.c

1  2 
libguile/async.h
libguile/threads.c
libguile/threads.h
module/Makefile.am

@@@ -75,9 -75,25 +75,25 @@@ SCM_API void scm_critical_section_end (
      SCM_I_CURRENT_THREAD->critical_section_level--;           \
      SCM_I_CURRENT_THREAD->block_asyncs--;                     \
      scm_i_pthread_mutex_unlock (&scm_i_critical_section_mutex); \
 -    scm_async_click ();                                               \
 +    scm_async_tick ();                                                \
    } while (0)
  
+ # define scm_i_pthread_mutex_lock_block_asyncs(m)      \
+   do                                                   \
+     {                                                  \
+       SCM_I_CURRENT_THREAD->block_asyncs++;            \
+       scm_i_pthread_mutex_lock (m);                    \
+     }                                                  \
+   while (0)
+ # define scm_i_pthread_mutex_unlock_unblock_asyncs(m)  \
+   do                                                   \
+     {                                                  \
+       scm_i_pthread_mutex_unlock (m);                  \
+       SCM_I_CURRENT_THREAD->block_asyncs--;            \
+     }                                                  \
+   while (0)
  #else /* !BUILDING_LIBGUILE */
  
  # define SCM_CRITICAL_SECTION_START  scm_critical_section_start ()
Simple merge
@@@ -140,7 -143,11 +140,8 @@@ SCM_INTERNAL void scm_init_threads (voi
  SCM_INTERNAL void scm_init_thread_procs (void);
  SCM_INTERNAL void scm_init_threads_default_dynamic_state (void);
  
+ SCM_INTERNAL void scm_i_dynwind_pthread_mutex_lock_block_asyncs (scm_i_pthread_mutex_t *mutex);
  
 -#define SCM_THREAD_SWITCHING_CODE \
 -  do { } while (0)
 -
  SCM_API SCM scm_call_with_new_thread (SCM thunk, SCM handler);
  SCM_API SCM scm_yield (void);
  SCM_API SCM scm_cancel_thread (SCM t);
Simple merge