diff options
author | rsc <devnull@localhost> | 2004-12-25 21:56:33 +0000 |
---|---|---|
committer | rsc <devnull@localhost> | 2004-12-25 21:56:33 +0000 |
commit | 1544f90960275dc9211bde30329c3258e0e1bf38 (patch) | |
tree | f55e7a73c03aaa24daa7cc2ad02822b921c477f9 /src/libthread/test/tspawn.c | |
parent | 7788fd54094693384ef5c92c475656dba8819feb (diff) | |
download | plan9port-1544f90960275dc9211bde30329c3258e0e1bf38.tar.gz plan9port-1544f90960275dc9211bde30329c3258e0e1bf38.tar.bz2 plan9port-1544f90960275dc9211bde30329c3258e0e1bf38.zip |
New thread library
Diffstat (limited to 'src/libthread/test/tspawn.c')
-rw-r--r-- | src/libthread/test/tspawn.c | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/src/libthread/test/tspawn.c b/src/libthread/test/tspawn.c new file mode 100644 index 00000000..ed4df3c4 --- /dev/null +++ b/src/libthread/test/tspawn.c @@ -0,0 +1,39 @@ +#include "u.h" +#include "libc.h" +#include "thread.h" + +void +threadmain(int argc, char **argv) +{ + int fd[3]; + Channel *c; + Waitmsg *w; + + ARGBEGIN{ + case 'D': + break; + }ARGEND + + c = threadwaitchan(); + fd[0] = dup(0, -1); + fd[1] = dup(1, -1); + fd[2] = dup(2, -1); + if(threadspawn(fd, argv[0], argv) < 0) + sysfatal("threadspawn: %r"); + fd[0] = dup(0, -1); + fd[1] = dup(1, -1); + fd[2] = dup(2, -1); + if(threadspawn(fd, argv[0], argv) < 0) + sysfatal("threadspawn: %r"); + w = recvp(c); + if(w == nil) + print("exec/recvp failed: %r\n"); + else + print("%d %lud %lud %lud %s\n", w->pid, w->time[0], w->time[1], w->time[2], w->msg); + w = recvp(c); + if(w == nil) + print("exec/recvp failed: %r\n"); + else + print("%d %lud %lud %lud %s\n", w->pid, w->time[0], w->time[1], w->time[2], w->msg); + threadexits(nil); +} |