summaryrefslogtreecommitdiff
path: root/cont.c
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-05-07 23:52:48 (GMT)
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-05-07 23:52:48 (GMT)
commitd7a9f591083547865634f2ae2f138b2d89b04c5b (patch)
treee6de6955d78d908e035b94a4dfb89175c641ebf1 /cont.c
parentcd36bea5684b065827060e07cc3d6e33987d61c1 (diff)
cont.c: wrapper function
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63352 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'cont.c')
-rw-r--r--cont.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/cont.c b/cont.c
index 096873f..6d51e0a 100644
--- a/cont.c
+++ b/cont.c
@@ -750,6 +750,7 @@ fiber_set_stack_location(void)
th->ec->machine.stack_start = (void*)(((VALUE)ptr & RB_PAGE_MASK) + STACK_UPPER((void *)&ptr, 0, RB_PAGE_SIZE));
}
+NORETURN(static VOID CALLBACK fiber_entry(void *arg));
static VOID CALLBACK
fiber_entry(void *arg)
{
@@ -758,6 +759,13 @@ fiber_entry(void *arg)
}
#else /* _WIN32 */
+NORETURN(static void fiber_entry(void *arg));
+static void
+fiber_entry(void *arg)
+{
+ rb_fiber_start();
+}
+
/*
* FreeBSD require a first (i.e. addr) argument of mmap(2) is not NULL
* if MAP_STACK is passed.
@@ -841,7 +849,7 @@ fiber_initialize_machine_stack_context(rb_fiber_t *fib, size_t size)
context->uc_stack.ss_size = size;
fib->ss_sp = ptr;
fib->ss_size = size;
- makecontext(context, rb_fiber_start, 0);
+ makecontext(context, fiber_entry, 0);
sec->machine.stack_start = (VALUE*)(ptr + STACK_DIR_UPPER(0, size));
sec->machine.stack_maxsize = size - RB_PAGE_SIZE;
#endif