From fcbf63e62c627deae76c1b8cb8c0876c536ed811 Mon Sep 17 00:00:00 2001 From: Jari Vetoniemi Date: Mon, 16 Mar 2020 18:49:26 +0900 Subject: Fresh start --- jni/ruby/thread_pthread.h | 54 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 jni/ruby/thread_pthread.h (limited to 'jni/ruby/thread_pthread.h') diff --git a/jni/ruby/thread_pthread.h b/jni/ruby/thread_pthread.h new file mode 100644 index 0000000..41e887a --- /dev/null +++ b/jni/ruby/thread_pthread.h @@ -0,0 +1,54 @@ +/********************************************************************** + + thread_pthread.h - + + $Author: normal $ + + Copyright (C) 2004-2007 Koichi Sasada + +**********************************************************************/ + +#ifndef RUBY_THREAD_PTHREAD_H +#define RUBY_THREAD_PTHREAD_H + +#ifdef HAVE_PTHREAD_NP_H +#include +#endif + +#define RB_NATIVETHREAD_LOCK_INIT PTHREAD_MUTEX_INITIALIZER +#define RB_NATIVETHREAD_COND_INIT { PTHREAD_COND_INITIALIZER, } + +typedef struct rb_thread_cond_struct { + pthread_cond_t cond; +#ifdef HAVE_CLOCKID_T + clockid_t clockid; +#endif +} rb_nativethread_cond_t; + +typedef struct native_thread_data_struct { + void *signal_thread_list; + rb_nativethread_cond_t sleep_cond; +} native_thread_data_t; + +#undef except +#undef try +#undef leave +#undef finally + +typedef struct rb_global_vm_lock_struct { + /* fast path */ + unsigned long acquired; + rb_nativethread_lock_t lock; + + /* slow path */ + volatile unsigned long waiting; + rb_nativethread_cond_t cond; + + /* yield */ + rb_nativethread_cond_t switch_cond; + rb_nativethread_cond_t switch_wait_cond; + int need_yield; + int wait_yield; +} rb_global_vm_lock_t; + +#endif /* RUBY_THREAD_PTHREAD_H */ -- cgit v1.2.3