summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-09-07 21:04:14 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-09-07 21:04:14 +0000
commitcc960d199dc0fdd52a0d2282b1ba7e6d8a1fc16c (patch)
treedd8d89c4958097dfce9485516fd69f66de2351ed
parent1be5a3ce75606b7021aa36da203de1bd58732af5 (diff)
downloadruby-cc960d199dc0fdd52a0d2282b1ba7e6d8a1fc16c.tar.gz
* thread_pthread.c (get_stack): defines only if possible.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/mvm@19231 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog7
-rw-r--r--thread_pthread.c20
2 files changed, 15 insertions, 12 deletions
diff --git a/ChangeLog b/ChangeLog
index 83784923da..f4123bd9a6 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,4 +1,4 @@
-Mon Sep 8 05:56:51 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Mon Sep 8 06:04:11 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
* configure.in (XLDFLAGS): added --enable-auto-import for cygwin and
mingw.
@@ -6,8 +6,8 @@ Mon Sep 8 05:56:51 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
* dir.c (rb_dir_open), io.c (rb_sysopenat, rb_openat): resolved
conflicts.
-<<<<<<< .working
-=======
+ * thread_pthread.c (get_stack): defines only if possible.
+
Sat Sep 6 15:06:21 2008 Tanaka Akira <akr@fsij.org>
* transcode.c (sym_html): new variable.
@@ -314,7 +314,6 @@ Thu Sep 4 13:22:02 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
* vm.c (rb_vm_mark): marks trap_list.
->>>>>>> .merge-right.r19180
Thu Sep 4 13:01:11 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
* io.c (struct sysopen_struct, rb_sysopen_internal, rb_sysopen):
diff --git a/thread_pthread.c b/thread_pthread.c
index 0d3381eb26..dd672babc4 100644
--- a/thread_pthread.c
+++ b/thread_pthread.c
@@ -207,10 +207,18 @@ native_thread_destroy(rb_thread_t *th)
#define STACK_DIR_UPPER(a,b) STACK_UPPER(&stack_grow_dir_detection, a, b)
#endif
+#if defined HAVE_PTHREAD_GETATTR_NP || defined HAVE_PTHREAD_ATTR_GET_NP
+#define STACKADDR_AVAILABLE 1
+#elif defined HAVE_PTHREAD_GET_STACKADDR_NP && defined HAVE_PTHREAD_GET_STACKSIZE_NP
+#define STACKADDR_AVAILABLE 1
+#elif defined HAVE_THR_STKSEGMENT || defined HAVE_PTHREAD_STACKSEG_NP
+#define STACKADDR_AVAILABLE 1
+#endif
+
+#ifdef STACKADDR_AVAILABLE
static int
get_stack(void **addr, size_t *size)
{
-#define STACKADDR_AVAILABLE 1
#define CHECK_ERR(expr) \
{int err = (expr); if (err) return err;}
#if defined HAVE_PTHREAD_GETATTR_NP || defined HAVE_PTHREAD_ATTR_GET_NP
@@ -254,15 +262,11 @@ get_stack(void **addr, size_t *size)
# endif
*addr = stk.ss_sp;
*size = stk.ss_size;
-#else
-#undef STACKADDR_AVAILABLE
- return -1;
#endif
-#ifdef STACKADDR_AVAILABLE
return 0;
-#endif
#undef CHECK_ERR
}
+#endif
#ifndef STACKADDR_AVAILABLE
static struct {
@@ -294,8 +298,8 @@ ruby_init_stack(void *addr
#else
if (!native_main_thread.stack_start ||
STACK_UPPER(&addr,
- native_main_thread.stack_start > addr,
- native_main_thread.stack_start < addr)) {
+ native_main_thread.stack_start > (VALUE *)addr,
+ native_main_thread.stack_start < (VALUE *)addr)) {
native_main_thread.stack_start = addr;
}
#endif