1 a3785ca2 2004-04-21 devnull #include <u.h>
2 a3785ca2 2004-04-21 devnull #include <libc.h>
3 76193d7c 2003-09-30 devnull #include <thread.h>
7 a3785ca2 2004-04-21 devnull STACK = 8192
10 76193d7c 2003-09-30 devnull int quiet;
11 76193d7c 2003-09-30 devnull int goal;
12 76193d7c 2003-09-30 devnull int buffer;
13 76193d7c 2003-09-30 devnull int (*fn)(void(*)(void*), void*, uint) = threadcreate;
16 76193d7c 2003-09-30 devnull primethread(void *arg)
18 76193d7c 2003-09-30 devnull Channel *c, *nc;
19 76193d7c 2003-09-30 devnull int p, i;
22 76193d7c 2003-09-30 devnull p = recvul(c);
23 76193d7c 2003-09-30 devnull if(p > goal)
24 76193d7c 2003-09-30 devnull threadexitsall(nil);
25 76193d7c 2003-09-30 devnull if(!quiet)
26 76193d7c 2003-09-30 devnull print("%d\n", p);
27 76193d7c 2003-09-30 devnull nc = chancreate(sizeof(ulong), buffer);
28 a3785ca2 2004-04-21 devnull (*fn)(primethread, nc, STACK);
30 76193d7c 2003-09-30 devnull i = recvul(c);
32 76193d7c 2003-09-30 devnull sendul(nc, i);
36 76193d7c 2003-09-30 devnull extern int _threaddebuglevel;
39 76193d7c 2003-09-30 devnull threadmain(int argc, char **argv)
42 76193d7c 2003-09-30 devnull Channel *c;
44 76193d7c 2003-09-30 devnull ARGBEGIN{
45 76193d7c 2003-09-30 devnull case 'D':
46 76193d7c 2003-09-30 devnull _threaddebuglevel = atoi(ARGF());
48 76193d7c 2003-09-30 devnull case 'q':
49 76193d7c 2003-09-30 devnull quiet = 1;
51 76193d7c 2003-09-30 devnull case 'b':
52 76193d7c 2003-09-30 devnull buffer = atoi(ARGF());
54 76193d7c 2003-09-30 devnull case 'p':
55 be36ff68 2004-04-29 devnull fn = proccreate;
59 76193d7c 2003-09-30 devnull if(argc>0)
60 76193d7c 2003-09-30 devnull goal = atoi(argv[0]);
62 76193d7c 2003-09-30 devnull goal = 100;
64 76193d7c 2003-09-30 devnull c = chancreate(sizeof(ulong), buffer);
65 a3785ca2 2004-04-21 devnull (*fn)(primethread, c, STACK);
66 76193d7c 2003-09-30 devnull for(i=2;; i++)
67 76193d7c 2003-09-30 devnull sendul(c, i);