diff options
Diffstat (limited to 'libguile/pthread-threads.h')
-rw-r--r-- | libguile/pthread-threads.h | 102 |
1 files changed, 55 insertions, 47 deletions
diff --git a/libguile/pthread-threads.h b/libguile/pthread-threads.h index ee61096f5..811c15f11 100644 --- a/libguile/pthread-threads.h +++ b/libguile/pthread-threads.h @@ -1,9 +1,9 @@ /* classes: h_files */ -#ifndef SCM_THREADS_PTHREADS_H -#define SCM_THREADS_PTHREADS_H +#ifndef SCM_PTHREADS_THREADS_H +#define SCM_PTHREADS_THREADS_H -/* Copyright (C) 2002 Free Software Foundation, Inc. +/* Copyright (C) 2002, 2005 Free Software Foundation, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -25,58 +25,66 @@ /* The pthreads-threads implementation. This is a direct mapping. */ -/* This is an interface between Guile and the pthreads thread package. */ - #include <pthread.h> #include <sched.h> -#include "libguile/threads-plugin.h" - -/* MDJ 021209 <djurfeldt@nada.kth.se>: - The separation of the plugin interface and the low-level C API - (currently in threads.h) needs to be completed in a sensible way. +/* Threads +*/ +#define scm_i_pthread_t pthread_t +#define scm_i_pthread_self pthread_self +#define scm_i_pthread_create pthread_create +#define scm_i_pthread_detach pthread_detach +#define scm_i_pthread_exit pthread_exit +#define scm_i_sched_yield sched_yield + +/* Signals */ +#define scm_i_pthread_sigmask pthread_sigmask -/* The scm_t_ types are temporarily used both in plugin and low-level API */ -#define scm_t_thread pthread_t - -#define scm_i_plugin_thread_create pthread_create - -#define scm_i_plugin_thread_join pthread_join -#define scm_i_plugin_thread_detach pthread_detach -#define scm_i_plugin_thread_self pthread_self -#define scm_i_plugin_thread_yield sched_yield - -extern scm_t_mutexattr scm_i_plugin_mutex; /* The "fast" mutex. */ - -#define scm_i_plugin_mutex_destroy(m) \ - pthread_mutex_destroy ((pthread_mutex_t *) (m)) -#define scm_i_plugin_mutex_trylock(m) \ - pthread_mutex_trylock ((pthread_mutex_t *) (m)) - -extern scm_t_mutexattr scm_i_plugin_rec_mutex; - -#define scm_i_plugin_cond_init pthread_cond_init -#define scm_i_plugin_cond_destroy pthread_cond_destroy -#define scm_i_plugin_cond_signal pthread_cond_signal -#define scm_i_plugin_cond_broadcast pthread_cond_broadcast - -#define scm_t_key pthread_key_t - -#define scm_i_plugin_key_create pthread_key_create -#define scm_i_plugin_key_delete pthread_key_delete -#define scm_i_plugin_setspecific pthread_setspecific -#define scm_i_plugin_getspecific pthread_getspecific - -#define scm_i_plugin_select select +/* Mutexes + */ +#define SCM_I_PTHREAD_MUTEX_INITIALIZER PTHREAD_MUTEX_INITIALIZER +#define SCM_I_PTHREAD_RECURSIVE_MUTEX_INITIALIZER \ + PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP +#define scm_i_pthread_mutex_t pthread_mutex_t +#define scm_i_pthread_mutex_init pthread_mutex_init +#define scm_i_pthread_mutex_destroy pthread_mutex_destroy +#define scm_i_pthread_mutex_trylock pthread_mutex_trylock +#define scm_i_pthread_mutex_lock pthread_mutex_lock +#define scm_i_pthread_mutex_unlock pthread_mutex_unlock + +/* Condition variables + */ +#define SCM_I_PTHREAD_COND_INITIALIZER PTHREAD_COND_INITIALIZER +#define scm_i_pthread_cond_t pthread_cond_t +#define scm_i_pthread_cond_init pthread_cond_init +#define scm_i_pthread_cond_destroy pthread_cond_destroy +#define scm_i_pthread_cond_signal pthread_cond_signal +#define scm_i_pthread_cond_broadcast pthread_cond_broadcast +#define scm_i_pthread_cond_wait pthread_cond_wait +#define scm_i_pthread_cond_timedwait pthread_cond_timedwait + +/* Onces + */ +#define scm_i_pthread_once_t pthread_once_t +#define SCM_I_PTHREAD_ONCE_INIT PTHREAD_ONCE_INIT +#define scm_i_pthread_once pthread_once -#ifdef SCM_DEBUG_THREADS -void scm_i_assert_heap_locked (void); -#endif +/* Thread specific storage + */ +#define scm_i_pthread_key_t pthread_key_t +#define scm_i_pthread_key_create pthread_key_create +#define scm_i_pthread_setspecific pthread_setspecific +#define scm_i_pthread_getspecific pthread_getspecific -void scm_init_pthread_threads (void); +/* Convenience functions + */ +#define scm_i_scm_pthread_mutex_lock scm_pthread_mutex_lock +#define scm_i_frame_pthread_mutex_lock scm_frame_pthread_mutex_lock +#define scm_i_scm_pthread_cond_wait scm_pthread_cond_wait +#define scm_i_scm_pthread_cond_timedwait scm_pthread_cond_timedwait -#endif /* SCM_THREADS_PTHREADS_H */ +#endif /* SCM_PTHREADS_THREADS_H */ /* Local Variables: |