summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog25
-rw-r--r--ext/coverage/depend2
-rw-r--r--ext/openssl/depend1
-rw-r--r--ext/openssl/ossl.c2
-rw-r--r--include/ruby/thread_native.h56
-rw-r--r--thread.c1
-rw-r--r--thread_native.h23
-rw-r--r--thread_pthread.h3
-rw-r--r--thread_win32.h9
-rw-r--r--vm_core.h8
10 files changed, 91 insertions, 39 deletions
diff --git a/ChangeLog b/ChangeLog
index 8acc5ca..d7a204b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,28 @@
+Wed May 14 19:31:03 2014 Koichi Sasada <ko1@atdot.net>
+
+ * ext/openssl/depend: remove dependency from internal headers.
+ [Feature #9612]
+
+ * ext/openssl/ossl.c (ossl_fips_mode_set): ditto.
+
+ * ext/coverage/depend: ditto.
+
+ * include/ruby/thread_native.h: added.
+
+ This header file only provides wrapper functions to control
+ native threads. These wrapper functions are used by MRI
+ implementation.
+
+ * vm_core.h: use include/ruby/thread_native.h.
+
+ * thread.c: ditto.
+
+ * thread_pthread.h: ditto.
+
+ * thread_win32.h: ditto.
+
+ * thread_native.h: removed.
+
Wed May 14 18:03:28 2014 Koichi Sasada <ko1@atdot.net>
* gc.c: enable RGENGC_AGE2_PROMOTION.
diff --git a/ext/coverage/depend b/ext/coverage/depend
index 1227a5c..ad0ac1c 100644
--- a/ext/coverage/depend
+++ b/ext/coverage/depend
@@ -8,4 +8,4 @@ $(OBJS): $(HDRS) $(ruby_headers) \
$(top_srcdir)/ruby_atomic.h \
$(top_srcdir)/thread_pthread.h \
$(top_srcdir)/internal.h \
- $(top_srcdir)/thread_native.h
+ $(top_srcdir)/include/ruby/thread_native.h
diff --git a/ext/openssl/depend b/ext/openssl/depend
index 7991159..9d47df2 100644
--- a/ext/openssl/depend
+++ b/ext/openssl/depend
@@ -3,4 +3,3 @@ $(OBJS): $(HDRS) $(ruby_headers) \
$(hdrdir)/ruby/encoding.h \
$(hdrdir)/ruby/oniguruma.h \
$(hdrdir)/ruby/thread.h
-ossl.o: $(top_srcdir)/thread_native.h $(top_srcdir)/thread_$(THREAD_MODEL).h
diff --git a/ext/openssl/ossl.c b/ext/openssl/ossl.c
index 370a16f..3f09ce7 100644
--- a/ext/openssl/ossl.c
+++ b/ext/openssl/ossl.c
@@ -467,7 +467,7 @@ ossl_fips_mode_set(VALUE self, VALUE enabled)
/**
* Stores locks needed for OpenSSL thread safety
*/
-#include "../../thread_native.h"
+#include "ruby/thread_native.h"
static rb_nativethread_lock_t *ossl_locks;
static void
diff --git a/include/ruby/thread_native.h b/include/ruby/thread_native.h
new file mode 100644
index 0000000..8e500c5
--- /dev/null
+++ b/include/ruby/thread_native.h
@@ -0,0 +1,56 @@
+/**********************************************************************
+
+ thread_native.h -
+
+ $Author: ko1 $
+ created at: Wed May 14 19:37:31 2014
+
+ Copyright (C) 2014 Yukihiro Matsumoto
+
+**********************************************************************/
+
+#ifndef RUBY_THREAD_NATIVE_H
+#define RUBY_THREAD_NATIVE_H 1
+
+/*
+ * This file contains wrapper APIs for native thread primitives
+ * which Ruby interpreter uses.
+ *
+ * Now, we only suppors pthread and Windows threads.
+ *
+ * If you want to use Ruby's Mutex and so on to synchronize Ruby Threads,
+ * please use Mutex directly.
+ */
+
+
+#if defined(_WIN32)
+#include <windows.h>
+typedef HANDLE rb_nativethread_id_t;
+
+typedef union rb_thread_lock_union {
+ HANDLE mutex;
+ CRITICAL_SECTION crit;
+} rb_nativethread_lock_t;
+
+#elif defined(HAVE_PTHREAD_H)
+#include <pthread.h>
+typedef pthread_t rb_nativethread_id_t;
+typedef pthread_mutex_t rb_nativethread_lock_t;
+
+#else
+#error "unsupported thread type"
+
+#endif
+
+RUBY_SYMBOL_EXPORT_BEGIN
+
+rb_nativethread_id_t rb_nativethread_self();
+
+void rb_nativethread_lock_initialize(rb_nativethread_lock_t *lock);
+void rb_nativethread_lock_destroy(rb_nativethread_lock_t *lock);
+void rb_nativethread_lock_lock(rb_nativethread_lock_t *lock);
+void rb_nativethread_lock_unlock(rb_nativethread_lock_t *lock);
+
+RUBY_SYMBOL_EXPORT_END
+
+#endif
diff --git a/thread.c b/thread.c
index 0cc64d9..eb6ceaf 100644
--- a/thread.c
+++ b/thread.c
@@ -62,6 +62,7 @@
#include "timev.h"
#include "ruby/io.h"
#include "ruby/thread.h"
+#include "ruby/thread_native.h"
#include "internal.h"
#ifndef USE_NATIVE_THREAD_PRIORITY
diff --git a/thread_native.h b/thread_native.h
deleted file mode 100644
index aa037d2..0000000
--- a/thread_native.h
+++ /dev/null
@@ -1,23 +0,0 @@
-#ifndef RUBY_THREAD_NATIVE_H
-#define RUBY_THREAD_NATIVE_H
-
-#if defined(_WIN32)
-#include "thread_win32.h"
-#elif defined(HAVE_PTHREAD_H)
-#include "thread_pthread.h"
-#else
-#error "unsupported thread type"
-#endif
-
-RUBY_SYMBOL_EXPORT_BEGIN
-
-rb_nativethread_id_t rb_nativethread_self();
-
-void rb_nativethread_lock_initialize(rb_nativethread_lock_t *lock);
-void rb_nativethread_lock_destroy(rb_nativethread_lock_t *lock);
-void rb_nativethread_lock_lock(rb_nativethread_lock_t *lock);
-void rb_nativethread_lock_unlock(rb_nativethread_lock_t *lock);
-
-RUBY_SYMBOL_EXPORT_END
-
-#endif
diff --git a/thread_pthread.h b/thread_pthread.h
index 411ef69..d1679f8 100644
--- a/thread_pthread.h
+++ b/thread_pthread.h
@@ -11,12 +11,9 @@
#ifndef RUBY_THREAD_PTHREAD_H
#define RUBY_THREAD_PTHREAD_H
-#include <pthread.h>
#ifdef HAVE_PTHREAD_NP_H
#include <pthread_np.h>
#endif
-typedef pthread_t rb_nativethread_id_t;
-typedef pthread_mutex_t rb_nativethread_lock_t;
typedef struct rb_thread_cond_struct {
pthread_cond_t cond;
diff --git a/thread_win32.h b/thread_win32.h
index c44fd91..60083da 100644
--- a/thread_win32.h
+++ b/thread_win32.h
@@ -12,8 +12,6 @@
#ifndef RUBY_THREAD_WIN32_H
#define RUBY_THREAD_WIN32_H
-#include <windows.h>
-
# ifdef __CYGWIN__
# undef _WIN32
# endif
@@ -21,13 +19,6 @@
WINBASEAPI BOOL WINAPI
TryEnterCriticalSection(IN OUT LPCRITICAL_SECTION lpCriticalSection);
-typedef HANDLE rb_nativethread_id_t;
-
-typedef union rb_thread_lock_union {
- HANDLE mutex;
- CRITICAL_SECTION crit;
-} rb_nativethread_lock_t;
-
typedef struct rb_thread_cond_struct {
struct cond_event_entry *next;
struct cond_event_entry *prev;
diff --git a/vm_core.h b/vm_core.h
index 1dacfeb..07fc60a 100644
--- a/vm_core.h
+++ b/vm_core.h
@@ -23,9 +23,15 @@
#include "id.h"
#include "method.h"
#include "ruby_atomic.h"
-#include "thread_native.h"
#include "ccan/list/list.h"
+#include "ruby/thread_native.h"
+#if defined(_WIN32)
+#include "thread_win32.h"
+#elif defined(HAVE_PTHREAD_H)
+#include "thread_pthread.h"
+#endif
+
#ifndef ENABLE_VM_OBJSPACE
#ifdef _WIN32
/*