[前][次][番号順一覧][スレッド一覧]

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),
+				  &reg, &regsiz));
+    *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/

[前][次][番号順一覧][スレッド一覧]