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"
7 1544f909 2004-12-25 devnull STACK = 8192
10 1544f909 2004-12-25 devnull int max = 10000;
11 1544f909 2004-12-25 devnull int (*mk)(void (*fn)(void*), void *arg, uint stack);
14 1544f909 2004-12-25 devnull countthread(void *v)
17 1544f909 2004-12-25 devnull Channel *c;
20 1544f909 2004-12-25 devnull for(i=2;; i++){
21 1544f909 2004-12-25 devnull sendul(c, i);
26 1544f909 2004-12-25 devnull filterthread(void *v)
28 1544f909 2004-12-25 devnull uint i, p;
29 1544f909 2004-12-25 devnull Channel *c, *nextc;
32 1544f909 2004-12-25 devnull p = recvul(c);
33 1544f909 2004-12-25 devnull print("%d\n", p);
34 1544f909 2004-12-25 devnull if(p > max)
35 1544f909 2004-12-25 devnull threadexitsall(0);
36 1544f909 2004-12-25 devnull nextc = chancreate(sizeof(ulong), 0);
37 1544f909 2004-12-25 devnull mk(filterthread, nextc, STACK);
39 1544f909 2004-12-25 devnull i = recvul(c);
41 1544f909 2004-12-25 devnull sendul(nextc, i);
46 1544f909 2004-12-25 devnull usage(void)
48 1544f909 2004-12-25 devnull fprint(2, "usage: tprimes [-p] [max]\n");
49 1544f909 2004-12-25 devnull threadexitsall("usage");
53 1544f909 2004-12-25 devnull threadmain(int argc, char **argv)
55 1544f909 2004-12-25 devnull Channel *c;
56 1544f909 2004-12-25 devnull int nbuf;
58 1544f909 2004-12-25 devnull nbuf = 0;
59 1544f909 2004-12-25 devnull mk = threadcreate;
60 1544f909 2004-12-25 devnull ARGBEGIN{
63 1544f909 2004-12-25 devnull case 'b':
64 1544f909 2004-12-25 devnull nbuf = atoi(EARGF(usage()));
66 1544f909 2004-12-25 devnull case 'p':
67 1544f909 2004-12-25 devnull mk = proccreate;
68 1544f909 2004-12-25 devnull max = 1000;
72 1544f909 2004-12-25 devnull if(argc == 1)
73 1544f909 2004-12-25 devnull max = atoi(argv[0]);
74 1544f909 2004-12-25 devnull else if(argc)
77 1544f909 2004-12-25 devnull c = chancreate(sizeof(ulong), nbuf);
78 1544f909 2004-12-25 devnull mk(countthread, c, STACK);
79 1544f909 2004-12-25 devnull mk(filterthread, c, STACK);
80 4dbefdd4 2004-12-27 devnull recvp(chancreate(sizeof(void*), 0));