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:
parent
cb1cfc42a4
commit
9de87eea47
67 changed files with 3044 additions and 2606 deletions
|
@ -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:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue