1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-06-14 23:50:19 +02:00

See ChangeLog from 2005-03-02.

This commit is contained in:
Marius Vollmer 2005-03-02 20:42:01 +00:00
parent cb1cfc42a4
commit 9de87eea47
67 changed files with 3044 additions and 2606 deletions

View file

@ -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"
/* 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
/* 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.
/* 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
/* 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
#define scm_i_plugin_thread_create pthread_create
/* 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
#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
/* 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
extern scm_t_mutexattr scm_i_plugin_mutex; /* The "fast" mutex. */
/* 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
#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))
/* 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
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
#ifdef SCM_DEBUG_THREADS
void scm_i_assert_heap_locked (void);
#endif
void scm_init_pthread_threads (void);
#endif /* SCM_THREADS_PTHREADS_H */
#endif /* SCM_PTHREADS_THREADS_H */
/*
Local Variables: