Blame


1 1544f909 2004-12-25 devnull #include "u.h"
2 1544f909 2004-12-25 devnull #include "libc.h"
3 1544f909 2004-12-25 devnull #include "thread.h"
4 1544f909 2004-12-25 devnull
5 1544f909 2004-12-25 devnull void
6 1544f909 2004-12-25 devnull threadmain(int argc, char **argv)
7 1544f909 2004-12-25 devnull {
8 1544f909 2004-12-25 devnull int fd[3];
9 1544f909 2004-12-25 devnull Channel *c;
10 1544f909 2004-12-25 devnull Waitmsg *w;
11 1544f909 2004-12-25 devnull
12 1544f909 2004-12-25 devnull ARGBEGIN{
13 1544f909 2004-12-25 devnull case 'D':
14 1544f909 2004-12-25 devnull break;
15 1544f909 2004-12-25 devnull }ARGEND
16 1544f909 2004-12-25 devnull
17 1544f909 2004-12-25 devnull c = threadwaitchan();
18 1544f909 2004-12-25 devnull fd[0] = dup(0, -1);
19 1544f909 2004-12-25 devnull fd[1] = dup(1, -1);
20 1544f909 2004-12-25 devnull fd[2] = dup(2, -1);
21 1544f909 2004-12-25 devnull if(threadspawn(fd, argv[0], argv) < 0)
22 1544f909 2004-12-25 devnull sysfatal("threadspawn: %r");
23 1544f909 2004-12-25 devnull fd[0] = dup(0, -1);
24 1544f909 2004-12-25 devnull fd[1] = dup(1, -1);
25 1544f909 2004-12-25 devnull fd[2] = dup(2, -1);
26 1544f909 2004-12-25 devnull if(threadspawn(fd, argv[0], argv) < 0)
27 1544f909 2004-12-25 devnull sysfatal("threadspawn: %r");
28 1544f909 2004-12-25 devnull w = recvp(c);
29 1544f909 2004-12-25 devnull if(w == nil)
30 1544f909 2004-12-25 devnull print("exec/recvp failed: %r\n");
31 1544f909 2004-12-25 devnull else
32 1544f909 2004-12-25 devnull print("%d %lud %lud %lud %s\n", w->pid, w->time[0], w->time[1], w->time[2], w->msg);
33 1544f909 2004-12-25 devnull w = recvp(c);
34 1544f909 2004-12-25 devnull if(w == nil)
35 1544f909 2004-12-25 devnull print("exec/recvp failed: %r\n");
36 1544f909 2004-12-25 devnull else
37 1544f909 2004-12-25 devnull print("%d %lud %lud %lud %s\n", w->pid, w->time[0], w->time[1], w->time[2], w->msg);
38 1544f909 2004-12-25 devnull threadexits(nil);
39 1544f909 2004-12-25 devnull }