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

ruby-changes:20372

From: kosaki <ko1@a...>
Date: Wed, 6 Jul 2011 21:24:36 +0900 (JST)
Subject: [ruby-changes:20372] kosaki:r32420 (trunk): * cont.c (fiber_machine_stack_alloc): use MAP_STACK if it's provided.

kosaki	2011-07-06 21:24:25 +0900 (Wed, 06 Jul 2011)

  New Revision: 32420

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=32420

  Log:
    * cont.c (fiber_machine_stack_alloc): use MAP_STACK if it's provided.

  Modified files:
    trunk/ChangeLog
    trunk/cont.c

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 32419)
+++ ChangeLog	(revision 32420)
@@ -1,3 +1,7 @@
+Wed Jul  6 21:23:38 2011  KOSAKI Motohiro  <kosaki.motohiro@g...>
+
+	* cont.c (fiber_machine_stack_alloc): use MAP_STACK if it's provided.
+
 Wed Jul  6 21:22:16 2011  KOSAKI Motohiro  <kosaki.motohiro@g...>
 
 	* cont.c (fiber_machine_stack_alloc): use MAP_FAILED instead of -1.
Index: cont.c
===================================================================
--- cont.c	(revision 32419)
+++ cont.c	(revision 32420)
@@ -515,7 +515,14 @@
     fiber_set_stack_location();
     rb_fiber_start();
 }
+#else /* _WIN32 */
+
+#ifdef MAP_STACK
+#define FIBER_STACK_FLAGS (MAP_PRIVATE | MAP_ANON | MAP_STACK)
 #else
+#define FIBER_STACK_FLAGS (MAP_PRIVATE | MAP_ANON)
+#endif
+
 static VALUE*
 fiber_machine_stack_alloc(size_t size)
 {
@@ -536,7 +543,7 @@
     else {
 	void *page;
 	STACK_GROW_DIR_DETECTION;
-	ptr = mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANON, -1, 0);
+	ptr = mmap(NULL, size, PROT_READ | PROT_WRITE, FIBER_STACK_FLAGS, -1, 0);
 	if (ptr == MAP_FAILED) {
 	    rb_raise(rb_eFiberError, "can't alloc machine stack to fiber");
 	}

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

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