* cont.c (fiber_machine_stack_alloc): use MAP_STACK if it's provided.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32420 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
302fcb568d
commit
c454ee6c9f
@ -1,3 +1,7 @@
|
|||||||
|
Wed Jul 6 21:23:38 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
|
||||||
|
|
||||||
|
* cont.c (fiber_machine_stack_alloc): use MAP_STACK if it's provided.
|
||||||
|
|
||||||
Wed Jul 6 21:22:16 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
|
Wed Jul 6 21:22:16 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
|
||||||
|
|
||||||
* cont.c (fiber_machine_stack_alloc): use MAP_FAILED instead of -1.
|
* cont.c (fiber_machine_stack_alloc): use MAP_FAILED instead of -1.
|
||||||
|
9
cont.c
9
cont.c
@ -515,7 +515,14 @@ fiber_entry(void *arg)
|
|||||||
fiber_set_stack_location();
|
fiber_set_stack_location();
|
||||||
rb_fiber_start();
|
rb_fiber_start();
|
||||||
}
|
}
|
||||||
|
#else /* _WIN32 */
|
||||||
|
|
||||||
|
#ifdef MAP_STACK
|
||||||
|
#define FIBER_STACK_FLAGS (MAP_PRIVATE | MAP_ANON | MAP_STACK)
|
||||||
#else
|
#else
|
||||||
|
#define FIBER_STACK_FLAGS (MAP_PRIVATE | MAP_ANON)
|
||||||
|
#endif
|
||||||
|
|
||||||
static VALUE*
|
static VALUE*
|
||||||
fiber_machine_stack_alloc(size_t size)
|
fiber_machine_stack_alloc(size_t size)
|
||||||
{
|
{
|
||||||
@ -536,7 +543,7 @@ fiber_machine_stack_alloc(size_t size)
|
|||||||
else {
|
else {
|
||||||
void *page;
|
void *page;
|
||||||
STACK_GROW_DIR_DETECTION;
|
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) {
|
if (ptr == MAP_FAILED) {
|
||||||
rb_raise(rb_eFiberError, "can't alloc machine stack to fiber");
|
rb_raise(rb_eFiberError, "can't alloc machine stack to fiber");
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user