new test program
This commit is contained in:
parent
ba15d71b0c
commit
793d93626b
1 changed files with 41 additions and 0 deletions
41
src/libthread/tspawn.c
Normal file
41
src/libthread/tspawn.c
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
#include <lib9.h>
|
||||
#include <thread.h>
|
||||
extern int _threaddebuglevel;
|
||||
|
||||
void
|
||||
doexec(void *v)
|
||||
{
|
||||
int fd[3];
|
||||
char **argv = v;
|
||||
|
||||
print("exec failed: %r\n");
|
||||
sendp(threadwaitchan(), nil);
|
||||
threadexits(nil);
|
||||
}
|
||||
|
||||
void
|
||||
threadmain(int argc, char **argv)
|
||||
{
|
||||
int fd[3];
|
||||
Channel *c;
|
||||
Waitmsg *w;
|
||||
|
||||
ARGBEGIN{
|
||||
case 'D':
|
||||
_threaddebuglevel = ~0;
|
||||
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");
|
||||
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);
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue