aboutsummaryrefslogtreecommitdiff
path: root/src/libthread/test
diff options
context:
space:
mode:
Diffstat (limited to 'src/libthread/test')
-rw-r--r--src/libthread/test/tcontext.c27
-rw-r--r--src/libthread/test/thello.c10
2 files changed, 37 insertions, 0 deletions
diff --git a/src/libthread/test/tcontext.c b/src/libthread/test/tcontext.c
new file mode 100644
index 00000000..fa58e063
--- /dev/null
+++ b/src/libthread/test/tcontext.c
@@ -0,0 +1,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);
+}
diff --git a/src/libthread/test/thello.c b/src/libthread/test/thello.c
new file mode 100644
index 00000000..c5732165
--- /dev/null
+++ b/src/libthread/test/thello.c
@@ -0,0 +1,10 @@
+#include <u.h>
+#include <libc.h>
+#include <thread.h>
+
+void
+threadmain(int argc, char **argv)
+{
+ print("hello, world\n");
+}
+