2002-12-16 Mikael Djurfeldt <mdj@kvast.blakulla.net>
+ * pthread-threads.c, pthread-threads.h (SCM_DEBUG_THREADS): Added
+ support for debugging mutex operations.
+
* threads.c (scm_thread): Removed filed joining_threads.
(thread_print): Print thread number as well as address of thread
structure.
pthread_mutex_unlock (&mutex_mutex);
return 0;
}
+
+int
+scm_i_plugin_cond_wait (scm_t_cond *c, scm_t_mutex *mx)
+{
+ mutex *m = (mutex *) mx;
+ return pthread_cond_wait ((pthread_cond_t *) c, m->mutex);
+}
+
+int
+scm_i_plugin_cond_wait (scm_t_cond *c,
+ scm_t_mutex *mx,
+ const struct timespec *t)
+{
+ mutex *m = (mutex *) mx;
+ return pthread_cond_timedwait ((pthread_cond_t *) c, m->mutex, t);
+}
+
#endif
/* The following section belongs in threads.c, or rather
extern scm_t_mutexattr scm_i_plugin_mutex; /* The "fast" mutex. */
+/* This debug stuff made things a bit messy. This needs some
+ reorganization. */
#ifdef SCM_DEBUG_THREADS
int scm_i_plugin_mutex_init (scm_t_mutex *, const scm_t_mutexattr *);
int scm_i_plugin_mutex_lock (scm_t_mutex *);
#define scm_t_cond pthread_cond_t
#define scm_i_plugin_cond_init pthread_cond_init
-#define scm_i_plugin_cond_destroy pthread_cond_destroy
+#define scm_i_plugin_cond_destroy pthread_cond_destroy
+#ifdef SCM_DEBUG_THREADS
+int scm_i_plugin_cond_wait (scm_t_cond *, scm_t_mutex *);
+int scm_i_plugin_cond_timedwait (scm_t_cond *,
+ scm_t_mutex *,
+ const struct timespec *);
+#else
#define scm_i_plugin_cond_wait(c, m) \
pthread_cond_wait ((c), (pthread_mutex_t *) (m))
#define scm_i_plugin_cond_timedwait(c, m, t) \
pthread_cond_timedwait ((c), (pthread_mutex_t *) (m), (t))
+#endif
#define scm_i_plugin_cond_signal pthread_cond_signal
#define scm_i_plugin_cond_broadcast pthread_cond_broadcast