/* Test of correct simulation for uc->uc_link. */ #include <assert.h> #include <stdio.h> #include <ucontext.h> static void print_value(int value) { printf("Value is %d.\n", value); } int main(void) { ucontext_t uc; char stack[8096]; volatile int done = 0; /* Get current context. */ getcontext(&uc); if (done) { /* Execution resumes here when print_value() returns. */ return 0; } done = 1; /* Setup the stack. */ uc.uc_stack.ss_sp = stack; uc.uc_stack.ss_size = sizeof(stack); /* Call print_value(). */ makecontext(&uc, print_value, 1, 42); setcontext(&uc); /* This code should not be reached. */ assert(0); return 0; }