ruby-changes:33863
From: ko1 <ko1@a...>
Date: Wed, 14 May 2014 19:55:53 +0900 (JST)
Subject: [ruby-changes:33863] ko1:r45944 (trunk): * ext/openssl/depend: remove dependency from internal headers.
ko1 2014-05-14 19:55:38 +0900 (Wed, 14 May 2014) New Revision: 45944 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=45944 Log: * 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. Added files: trunk/include/ruby/thread_native.h Removed files: trunk/thread_native.h Modified files: trunk/ChangeLog trunk/ext/coverage/depend trunk/ext/openssl/depend trunk/ext/openssl/ossl.c trunk/thread.c trunk/thread_pthread.h trunk/thread_win32.h trunk/vm_core.h Index: thread_native.h =================================================================== --- thread_native.h (revision 45943) +++ thread_native.h (revision 45944) @@ -1,23 +0,0 @@ https://github.com/ruby/ruby/blob/trunk/thread_native.h#L0 -#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 Index: thread_win32.h =================================================================== --- thread_win32.h (revision 45943) +++ thread_win32.h (revision 45944) @@ -12,8 +12,6 @@ https://github.com/ruby/ruby/blob/trunk/thread_win32.h#L12 #ifndef RUBY_THREAD_WIN32_H #define RUBY_THREAD_WIN32_H -#include <windows.h> - # ifdef __CYGWIN__ # undef _WIN32 # endif @@ -21,13 +19,6 @@ https://github.com/ruby/ruby/blob/trunk/thread_win32.h#L19 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; Index: include/ruby/thread_native.h =================================================================== --- include/ruby/thread_native.h (revision 0) +++ include/ruby/thread_native.h (revision 45944) @@ -0,0 +1,56 @@ https://github.com/ruby/ruby/blob/trunk/include/ruby/thread_native.h#L1 +/********************************************************************** + + 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 Property changes on: include/ruby/thread_native.h ___________________________________________________________________ Added: svn:eol-style + LF Index: ChangeLog =================================================================== --- ChangeLog (revision 45943) +++ ChangeLog (revision 45944) @@ -1,3 +1,28 @@ https://github.com/ruby/ruby/blob/trunk/ChangeLog#L1 +Wed May 14 19:31:03 2014 Koichi Sasada <ko1@a...> + + * 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@a...> * gc.c: enable RGENGC_AGE2_PROMOTION. Index: thread_pthread.h =================================================================== --- thread_pthread.h (revision 45943) +++ thread_pthread.h (revision 45944) @@ -11,12 +11,9 @@ https://github.com/ruby/ruby/blob/trunk/thread_pthread.h#L11 #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; Index: vm_core.h =================================================================== --- vm_core.h (revision 45943) +++ vm_core.h (revision 45944) @@ -23,9 +23,15 @@ https://github.com/ruby/ruby/blob/trunk/vm_core.h#L23 #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 /* Index: thread.c =================================================================== --- thread.c (revision 45943) +++ thread.c (revision 45944) @@ -62,6 +62,7 @@ https://github.com/ruby/ruby/blob/trunk/thread.c#L62 #include "timev.h" #include "ruby/io.h" #include "ruby/thread.h" +#include "ruby/thread_native.h" #include "internal.h" #ifndef USE_NATIVE_THREAD_PRIORITY Index: ext/coverage/depend =================================================================== --- ext/coverage/depend (revision 45943) +++ ext/coverage/depend (revision 45944) @@ -8,4 +8,4 @@ $(OBJS): $(HDRS) $(ruby_headers) \ https://github.com/ruby/ruby/blob/trunk/ext/coverage/depend#L8 $(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 Index: ext/openssl/ossl.c =================================================================== --- ext/openssl/ossl.c (revision 45943) +++ ext/openssl/ossl.c (revision 45944) @@ -467,7 +467,7 @@ ossl_fips_mode_set(VALUE self, VALUE ena https://github.com/ruby/ruby/blob/trunk/ext/openssl/ossl.c#L467 /** * 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 Index: ext/openssl/depend =================================================================== --- ext/openssl/depend (revision 45943) +++ ext/openssl/depend (revision 45944) @@ -3,4 +3,3 @@ $(OBJS): $(HDRS) $(ruby_headers) \ https://github.com/ruby/ruby/blob/trunk/ext/openssl/depend#L3 $(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 -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/