aboutsummaryrefslogtreecommitdiff
path: root/src/libthread/test/tcontext.c
blob: fa58e0639da561433251899d5ebc70ebe7c2af0c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include "../threadimpl.h"
#undef exits


ucontext_t c0, c1;
char stack[65536];

void
go(void *v)
{
	print("hello, world\n");
	setcontext(&c0);
}

void
main(void)
{
//	print("in main\n");
	getcontext(&c1);
	c1.uc_stack.ss_sp = stack;
	c1.uc_stack.ss_size = sizeof stack;
	makecontext(&c1, go, 1, 0);
	if(getcontext(&c0) == 0)
		setcontext(&c1);
	print("back in main\n");
	exits(0);
}