1 /* classes: h_files */ 2 3 #ifndef SCM_PTHREADS_THREADS_H 4 #define SCM_PTHREADS_THREADS_H 5 6 /* Copyright (C) 2002, 2005, 2006, 2011 Free Software Foundation, Inc. 7 * 8 * This library is free software; you can redistribute it and/or 9 * modify it under the terms of the GNU Lesser General Public License 10 * as published by the Free Software Foundation; either version 3 of 11 * the License, or (at your option) any later version. 12 * 13 * This library is distributed in the hope that it will be useful, but 14 * WITHOUT ANY WARRANTY; without even the implied warranty of 15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 16 * Lesser General Public License for more details. 17 * 18 * You should have received a copy of the GNU Lesser General Public 19 * License along with this library; if not, write to the Free Software 20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 21 * 02110-1301 USA 22 */ 23 24 25 26 /* The pthreads-threads implementation. This is a direct mapping. 27 */ 28 29 #include <pthread.h> 30 #if HAVE_PTHREAD_NP_H 31 # include <pthread_np.h> 32 #endif 33 #include <sched.h> 34 35 /* Threads 36 */ 37 #define scm_i_pthread_t pthread_t 38 #define scm_i_pthread_self pthread_self 39 #define scm_i_pthread_create pthread_create 40 #define scm_i_pthread_detach pthread_detach 41 42 #define scm_i_pthread_exit pthread_exit 43 #define scm_i_pthread_cancel pthread_cancel 44 45 #define scm_i_pthread_cleanup_push pthread_cleanup_push 46 #define scm_i_pthread_cleanup_pop pthread_cleanup_pop 47 #define scm_i_sched_yield sched_yield 48 49 /* Signals 50 */ 51 #define scm_i_pthread_sigmask pthread_sigmask 52 53 /* Mutexes 54 */ 55 #if SCM_NEED_BRACES_ON_PTHREAD_MUTEX_INITIALIZER 56 # define SCM_I_PTHREAD_MUTEX_INITIALIZER { PTHREAD_MUTEX_INITIALIZER } 57 #else 58 # define SCM_I_PTHREAD_MUTEX_INITIALIZER PTHREAD_MUTEX_INITIALIZER 59 #endif 60 #define scm_i_pthread_mutex_t pthread_mutex_t 61 #define scm_i_pthread_mutex_init pthread_mutex_init 62 #define scm_i_pthread_mutex_destroy pthread_mutex_destroy 63 #define scm_i_pthread_mutex_trylock pthread_mutex_trylock 64 #define scm_i_pthread_mutex_lock pthread_mutex_lock 65 #define scm_i_pthread_mutex_unlock pthread_mutex_unlock 66 extern pthread_mutexattr_t scm_i_pthread_mutexattr_recursive[1]; 67 68 /* Condition variables 69 */ 70 #define SCM_I_PTHREAD_COND_INITIALIZER PTHREAD_COND_INITIALIZER 71 #define scm_i_pthread_cond_t pthread_cond_t 72 #define scm_i_pthread_cond_init pthread_cond_init 73 #define scm_i_pthread_cond_destroy pthread_cond_destroy 74 #define scm_i_pthread_cond_signal pthread_cond_signal 75 #define scm_i_pthread_cond_broadcast pthread_cond_broadcast 76 #define scm_i_pthread_cond_wait pthread_cond_wait 77 #define scm_i_pthread_cond_timedwait pthread_cond_timedwait 78 79 /* Onces 80 */ 81 #define scm_i_pthread_once_t pthread_once_t 82 #define scm_i_pthread_once pthread_once 83 #if SCM_NEED_BRACES_ON_PTHREAD_ONCE_INIT 84 #define SCM_I_PTHREAD_ONCE_INIT { PTHREAD_ONCE_INIT } 85 #else 86 #define SCM_I_PTHREAD_ONCE_INIT PTHREAD_ONCE_INIT 87 #endif 88 89 /* Thread specific storage 90 */ 91 #define scm_i_pthread_key_t pthread_key_t 92 #define scm_i_pthread_key_create pthread_key_create 93 #define scm_i_pthread_setspecific pthread_setspecific 94 #define scm_i_pthread_getspecific pthread_getspecific 95 96 /* Convenience functions 97 */ 98 #define scm_i_scm_pthread_mutex_lock scm_pthread_mutex_lock 99 #define scm_i_dynwind_pthread_mutex_lock scm_dynwind_pthread_mutex_lock 100 #define scm_i_scm_pthread_cond_wait scm_pthread_cond_wait 101 #define scm_i_scm_pthread_cond_timedwait scm_pthread_cond_timedwait 102 103 #endif /* SCM_PTHREADS_THREADS_H */ 104 105 /* 106 Local Variables: 107 c-file-style: "gnu" 108 End: 109 */ 110