summaryrefslogtreecommitdiff
path: root/libguile/pthread-threads.h
diff options
context:
space:
mode:
Diffstat (limited to 'libguile/pthread-threads.h')
-rw-r--r--libguile/pthread-threads.h102
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: