1 76193d7c 2003-09-30 devnull #include <lib9.h>
2 76193d7c 2003-09-30 devnull #include <thread.h>
4 76193d7c 2003-09-30 devnull int quiet;
6 76193d7c 2003-09-30 devnull int buffer;
7 76193d7c 2003-09-30 devnull int (*fn)(void(*)(void*), void*, uint) = threadcreate;
10 76193d7c 2003-09-30 devnull primethread(void *arg)
12 76193d7c 2003-09-30 devnull Channel *c, *nc;
13 76193d7c 2003-09-30 devnull int p, i;
16 76193d7c 2003-09-30 devnull p = recvul(c);
17 76193d7c 2003-09-30 devnull if(p > goal)
18 76193d7c 2003-09-30 devnull threadexitsall(nil);
19 76193d7c 2003-09-30 devnull if(!quiet)
20 76193d7c 2003-09-30 devnull print("%d\n", p);
21 76193d7c 2003-09-30 devnull nc = chancreate(sizeof(ulong), buffer);
22 76193d7c 2003-09-30 devnull (*fn)(primethread, nc, 8192);
24 76193d7c 2003-09-30 devnull i = recvul(c);
26 76193d7c 2003-09-30 devnull sendul(nc, i);
30 76193d7c 2003-09-30 devnull extern int _threaddebuglevel;
33 76193d7c 2003-09-30 devnull threadmain(int argc, char **argv)
36 76193d7c 2003-09-30 devnull Channel *c;
38 76193d7c 2003-09-30 devnull ARGBEGIN{
39 76193d7c 2003-09-30 devnull case 'D':
40 76193d7c 2003-09-30 devnull _threaddebuglevel = atoi(ARGF());
42 76193d7c 2003-09-30 devnull case 'q':
43 76193d7c 2003-09-30 devnull quiet = 1;
45 76193d7c 2003-09-30 devnull case 'b':
46 76193d7c 2003-09-30 devnull buffer = atoi(ARGF());
48 76193d7c 2003-09-30 devnull case 'p':
49 76193d7c 2003-09-30 devnull fn=proccreate;
53 76193d7c 2003-09-30 devnull if(argc>0)
54 76193d7c 2003-09-30 devnull goal = atoi(argv[0]);
56 76193d7c 2003-09-30 devnull goal = 100;
58 76193d7c 2003-09-30 devnull c = chancreate(sizeof(ulong), buffer);
59 76193d7c 2003-09-30 devnull (*fn)(primethread, c, 8192);
60 76193d7c 2003-09-30 devnull for(i=2;; i++)
61 76193d7c 2003-09-30 devnull sendul(c, i);