… | |
… | |
210 | perror ("sigaction"); |
210 | perror ("sigaction"); |
211 | abort (); |
211 | abort (); |
212 | } |
212 | } |
213 | |
213 | |
214 | /* set the new stack */ |
214 | /* set the new stack */ |
215 | nstk.ss_sp = STACK_ADJUST_PTR (sptr,ssize); /* yes, some platforms (IRIX) get this wrong. */ |
215 | nstk.ss_sp = STACK_ADJUST_PTR (sptr, ssize); /* yes, some platforms (IRIX) get this wrong. */ |
216 | nstk.ss_size = STACK_ADJUST_SIZE (sptr,ssize); |
216 | nstk.ss_size = STACK_ADJUST_SIZE (sptr, ssize); |
217 | nstk.ss_flags = 0; |
217 | nstk.ss_flags = 0; |
218 | |
218 | |
219 | if (sigaltstack (&nstk, &ostk) < 0) |
219 | if (sigaltstack (&nstk, &ostk) < 0) |
220 | { |
220 | { |
221 | perror ("sigaltstack"); |
221 | perror ("sigaltstack"); |
… | |
… | |
403 | args.self = ctx; |
403 | args.self = ctx; |
404 | args.main = &nctx; |
404 | args.main = &nctx; |
405 | |
405 | |
406 | pthread_attr_init (&attr); |
406 | pthread_attr_init (&attr); |
407 | #if __UCLIBC__ |
407 | #if __UCLIBC__ |
|
|
408 | /* exists, but is borked */ |
408 | pthread_attr_setstacksize (&attr, (size_t)ssize); |
409 | /*pthread_attr_setstacksize (&attr, (size_t)ssize);*/ |
409 | #else |
410 | #else |
410 | pthread_attr_setstack (&attr, sptr, (size_t)ssize); |
411 | pthread_attr_setstack (&attr, sptr, (size_t)ssize); |
411 | #endif |
412 | #endif |
412 | pthread_attr_setscope (&attr, PTHREAD_SCOPE_PROCESS); |
413 | pthread_attr_setscope (&attr, PTHREAD_SCOPE_PROCESS); |
413 | pthread_create (&ctx->id, &attr, coro_init, &args); |
414 | pthread_create (&ctx->id, &attr, coro_init, &args); |