… | |
… | |
44 | # define STACK_ADJUST_PTR(sp,ss) (sp) |
44 | # define STACK_ADJUST_PTR(sp,ss) (sp) |
45 | # define STACK_ADJUST_SIZE(sp,ss) (ss) |
45 | # define STACK_ADJUST_SIZE(sp,ss) (ss) |
46 | # endif |
46 | # endif |
47 | #endif |
47 | #endif |
48 | |
48 | |
49 | #if CORO_SJLJ || CORO_LOOSE || CORO_LINUX || CORO_IRIX |
49 | #if CORO_SJLJ || CORO_LOSER || CORO_LINUX || CORO_IRIX |
50 | |
50 | |
51 | #if CORO_SJLJ |
51 | #if CORO_SJLJ |
|
|
52 | # include <stdio.h> |
52 | # include <signal.h> |
53 | # include <signal.h> |
53 | #endif |
54 | #endif |
54 | |
55 | |
55 | static volatile coro_func coro_init_func; |
56 | static volatile coro_func coro_init_func; |
56 | static volatile void *coro_init_arg; |
57 | static volatile void *coro_init_arg; |
… | |
… | |
102 | ctx->uc.uc_stack.ss_size = (size_t) STACK_ADJUST_SIZE (sptr,ssize); |
103 | ctx->uc.uc_stack.ss_size = (size_t) STACK_ADJUST_SIZE (sptr,ssize); |
103 | ctx->uc.uc_stack.ss_flags = 0; |
104 | ctx->uc.uc_stack.ss_flags = 0; |
104 | |
105 | |
105 | makecontext (&(ctx->uc), (void (*)()) coro, 1, arg); |
106 | makecontext (&(ctx->uc), (void (*)()) coro, 1, arg); |
106 | |
107 | |
107 | #elif CORO_SJLJ || CORO_LOOSE || CORO_LINUX || CORO_IRIX |
108 | #elif CORO_SJLJ || CORO_LOSER || CORO_LINUX || CORO_IRIX |
108 | |
109 | |
109 | # if CORO_SJLJ |
110 | # if CORO_SJLJ |
110 | stack_t ostk, nstk; |
111 | stack_t ostk, nstk; |
111 | struct sigaction osa, nsa; |
112 | struct sigaction osa, nsa; |
112 | sigset_t nsig, osig; |
113 | sigset_t nsig, osig; |
… | |
… | |
162 | |
163 | |
163 | sigaction (SIGUSR1, &osa, 0); |
164 | sigaction (SIGUSR1, &osa, 0); |
164 | |
165 | |
165 | sigprocmask (SIG_SETMASK, &osig, 0); |
166 | sigprocmask (SIG_SETMASK, &osig, 0); |
166 | |
167 | |
167 | # elif CORO_LOOSE |
168 | # elif CORO_LOSER |
168 | |
169 | |
169 | setjmp (ctx->env); |
170 | setjmp (ctx->env); |
170 | ctx->env[7] = (long)((char *)sptr + ssize); |
171 | ctx->env[7] = (long)((char *)sptr + ssize); |
171 | ctx->env[8] = (long)coro_init; |
172 | ctx->env[8] = (long)coro_init; |
172 | |
173 | |