diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2014-06-11 08:38:09 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2014-06-11 08:38:09 +0000 |
commit | dfd8c5d4020131798d3fe52bb6a0c973422aded2 (patch) | |
tree | 71e12951745cde99de92fd7cd79bf3c90052afff /configure.in | |
parent | e2b10b6d131425c395c5fe286ce6fd55d46f7c51 (diff) | |
download | ruby-dfd8c5d4020131798d3fe52bb6a0c973422aded2.tar.gz |
thread.c: fix for non-scalar pthread_t
* configure.in (rb_cv_scalar_pthread_t): pthread_t is not required
to be a scalar type.
* thread.c (fill_thread_id_string, thread_id_str): dump pthread_t
in hexadecimal form if it is not a scalar type, assume it can be
represented in a pointer form otherwise. based on the patch by
Rei Odaira at [ruby-core:62867]. [ruby-core:62857] [Bug #9884]
* thread_pthread.c (Init_native_thread, thread_start_func_1),
(native_thread_create): set thread_id_str if needed.
* vm_core.h (rb_thread_t): add thread_id_string if needed.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@46406 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'configure.in')
-rw-r--r-- | configure.in | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/configure.in b/configure.in index 8b7f95dad3..15bdf359af 100644 --- a/configure.in +++ b/configure.in @@ -2603,6 +2603,20 @@ if test x"$enable_pthread" = xyes; then else AC_MSG_WARN("Don't know how to find pthread library on your system -- thread support disabled") fi + AC_CACHE_CHECK([whether pthread_t is scalar type], [rb_cv_scalar_pthread_t], [ + AC_TRY_COMPILE([ + @%:@include <pthread.h> + ], [ + pthread_t thread_id; + thread_id = 0; + if (!thread_id) return 0; + ], [rb_cv_scalar_pthread_t=yes], [rb_cv_scalar_pthread_t=no]) + ]) + if test x"$rb_cv_scalar_pthread_t" = xyes; then + : # RUBY_CHECK_SIZEOF(pthread_t, [void* int long], [], [@%:@include <pthread.h>]) + else + AC_DEFINE(NON_SCALAR_THREAD_ID) + fi AC_CHECK_FUNCS(sched_yield pthread_attr_setinheritsched \ pthread_getattr_np pthread_attr_get_np pthread_attr_getstack\ pthread_get_stackaddr_np pthread_get_stacksize_np \ |