1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-05-01 20:30:28 +02:00

* pthread-threads.c, pthread-threads.h (SCM_DEBUG_THREADS): Added

support for debugging mutex operations.
This commit is contained in:
Mikael Djurfeldt 2002-12-16 20:29:18 +00:00
parent 0b6843b1eb
commit 6da2dfc4e0
3 changed files with 30 additions and 1 deletions

View file

@ -1,5 +1,8 @@
2002-12-16 Mikael Djurfeldt <mdj@kvast.blakulla.net> 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. * threads.c (scm_thread): Removed filed joining_threads.
(thread_print): Print thread number as well as address of thread (thread_print): Print thread number as well as address of thread
structure. structure.

View file

@ -142,6 +142,23 @@ scm_i_plugin_mutex_unlock (scm_t_mutex *mx)
pthread_mutex_unlock (&mutex_mutex); pthread_mutex_unlock (&mutex_mutex);
return 0; 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 #endif
/* The following section belongs in threads.c, or rather /* The following section belongs in threads.c, or rather

View file

@ -80,6 +80,8 @@ typedef struct { char _[SCM_MUTEX_MAXSIZE]; } scm_t_mutex;
extern scm_t_mutexattr scm_i_plugin_mutex; /* The "fast" mutex. */ 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 #ifdef SCM_DEBUG_THREADS
int scm_i_plugin_mutex_init (scm_t_mutex *, const scm_t_mutexattr *); int scm_i_plugin_mutex_init (scm_t_mutex *, const scm_t_mutexattr *);
int scm_i_plugin_mutex_lock (scm_t_mutex *); int scm_i_plugin_mutex_lock (scm_t_mutex *);
@ -135,10 +137,17 @@ int scm_i_plugin_rec_mutex_unlock (scm_t_rec_mutex *);
#define scm_i_plugin_cond_init pthread_cond_init #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) \ #define scm_i_plugin_cond_wait(c, m) \
pthread_cond_wait ((c), (pthread_mutex_t *) (m)) pthread_cond_wait ((c), (pthread_mutex_t *) (m))
#define scm_i_plugin_cond_timedwait(c, m, t) \ #define scm_i_plugin_cond_timedwait(c, m, t) \
pthread_cond_timedwait ((c), (pthread_mutex_t *) (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_signal pthread_cond_signal
#define scm_i_plugin_cond_broadcast pthread_cond_broadcast #define scm_i_plugin_cond_broadcast pthread_cond_broadcast