ruby-changes:16498
From: kanemoto <ko1@a...>
Date: Wed, 30 Jun 2010 02:32:46 +0900 (JST)
Subject: [ruby-changes:16498] Ruby:r28487 (ruby_1_9_2): * thread_pthread.c (get_stack): use pthread_getthrds_np() for AIX.
kanemoto 2010-06-30 02:32:30 +0900 (Wed, 30 Jun 2010) New Revision: 28487 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=28487 Log: * thread_pthread.c (get_stack): use pthread_getthrds_np() for AIX. * configure.in: ditto. Modified files: branches/ruby_1_9_2/ChangeLog branches/ruby_1_9_2/configure.in branches/ruby_1_9_2/thread_pthread.c Index: ruby_1_9_2/configure.in =================================================================== --- ruby_1_9_2/configure.in (revision 28486) +++ ruby_1_9_2/configure.in (revision 28487) @@ -1563,7 +1563,7 @@ AC_CHECK_FUNCS(nanosleep sched_yield pthread_attr_setinheritsched \ pthread_getattr_np pthread_attr_get_np pthread_attr_getstack\ pthread_get_stackaddr_np pthread_get_stacksize_np \ - thr_stksegment pthread_stackseg_np) + thr_stksegment pthread_stackseg_np pthread_getthrds_np) if test x"$ac_cv_func_nanosleep" = xno; then AC_CHECK_LIB(rt, nanosleep) if test x"$ac_cv_lib_rt_nanosleep" = xyes; then Index: ruby_1_9_2/ChangeLog =================================================================== --- ruby_1_9_2/ChangeLog (revision 28486) +++ ruby_1_9_2/ChangeLog (revision 28487) @@ -1,3 +1,9 @@ +Wed Jun 30 02:37:30 2010 Yutaka Kanemoto <kanemoto@r...> + + * thread_pthread.c (get_stack): use pthread_getthrds_np() for AIX. + + * configure.in: ditto. + Wed Jun 23 21:17:32 2010 Tanaka Akira <akr@f...> * ext/socket/raddrinfo.c (ruby_getaddrinfo__darwin): new workaround for Index: ruby_1_9_2/thread_pthread.c =================================================================== --- ruby_1_9_2/thread_pthread.c (revision 28486) +++ ruby_1_9_2/thread_pthread.c (revision 28487) @@ -199,6 +199,8 @@ #define STACKADDR_AVAILABLE 1 #elif defined HAVE_THR_STKSEGMENT || defined HAVE_PTHREAD_STACKSEG_NP #define STACKADDR_AVAILABLE 1 +#elif defined HAVE_PTHREAD_GETTHRDS_NP +#define STACKADDR_AVAILABLE 1 #endif #ifdef STACKADDR_AVAILABLE @@ -248,6 +250,16 @@ # endif *addr = stk.ss_sp; *size = stk.ss_size; +#elif defined HAVE_PTHREAD_GETTHRDS_NP + pthread_t th = pthread_self(); + struct __pthrdsinfo thinfo; + char reg[256]; + int regsiz=sizeof(reg); + CHECK_ERR(pthread_getthrds_np(&th, PTHRDSINFO_QUERY_ALL, + &thinfo, sizeof(thinfo), + ®, ®siz)); + *addr = thinfo.__pi_stackaddr; + *size = thinfo.__pi_stacksize; #endif return 0; #undef CHECK_ERR -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/