]> git.lizzy.rs Git - plan9front.git/blob - sys/src/libthread/tprimes.c
threadimpl.h: remove Printsize as well (unused)
[plan9front.git] / sys / src / libthread / tprimes.c
1 #include <u.h>
2 #include <libc.h>
3 #include <thread.h>
4
5 int quiet;
6 int goal;
7 int buffer;
8 int (*fn)(void(*)(void*), void*, uint) = threadcreate;
9
10 void
11 primethread(void *arg)
12 {
13         Channel *c, *nc;
14         int p, i;
15
16         c = arg;
17         p = recvul(c);
18         if(p > goal)
19                 threadexitsall(nil);
20         if(!quiet)
21                 print("%d\n", p);
22         nc = chancreate(sizeof(ulong), buffer);
23         (*fn)(primethread, nc, 1024);
24         for(;;){
25                 i = recvul(c);
26                 if(i%p)
27                         sendul(nc, i);
28         }
29 }
30
31 void
32 threadmain(int argc, char **argv)
33 {
34         int i;
35         Channel *c;
36
37         ARGBEGIN{
38         case 'q':
39                 quiet = 1;
40                 break;
41         case 'b':
42                 buffer = atoi(ARGF());
43                 break;
44         case 'p':
45                 fn=proccreate;
46                 break;
47         }ARGEND
48
49         if(argc>0)
50                 goal = atoi(argv[0]);
51         else
52                 goal = 100;
53
54         c = chancreate(sizeof(ulong), buffer);
55         threadcreate(primethread, c, 1024);
56         for(i=2;; i++)
57                 sendul(c, i);
58 }