|
|
1.1 root 1: #include <stdio.h>
2: #include "pret.h"
3:
4: struct PROCTABLE proctable[MAXPROC]; /* index to process names */
5:
6: int nrprocs = 0;
7:
8: procsize(n, m, k)
9: { proctable[n].nrstates = m;
10: proctable[n].unreach = k;
11: }
12:
13: newprocname(str, repl)
14: char *str;
15: { register int i;
16:
17: for (i = 0; i < nrprocs; i++)
18: if (strcmp(str, proctable[i].name) == 0)
19: break;
20:
21: if (i == nrprocs)
22: { if (nrprocs >= MAXPROC)
23: whoops("too many processes");
24: proctable[i].nrstates = 0;
25: proctable[i].unreach = 0;
26: proctable[i].replic = repl;
27: strcpy(proctable[nrprocs++].name, str);
28: } else
29: yyerror("process redeclared, %s", str);
30:
31: return i;
32: }
33:
34: numprocs(fd)
35: FILE *fd;
36: {
37: extern int extras;
38: fprintf(fd, "%d processes\n", nrprocs+extras);
39: }
40:
41: chatter()
42: { int i;
43: extern int verbose, nrqs, nrmesgs, nrrefs, assertion, inertion, extras;
44:
45: if (verbose)
46: { i = ((assertion != -1) + (inertion != -1));
47: printf("\nOverview:\n========\n");
48: printf("%d queue%s:\n", nrqs, (nrqs==1)?"":"s");
49: listqs();
50: printf("%d process%s:\n",
51: nrprocs+extras, (nrprocs+extras==1)?"":"es");
52: listprs();
53: printf("%d procedure%s:\n", nrrefs, (nrrefs==1)?"":"s");
54: listrefs();
55: printf("%d assertion%s\n", i, (i==1)?"":"s");
56: }
57: }
58:
59: listprs()
60: { int i, k;
61:
62: for (i = 0; i < nrprocs; i++)
63: { printf("\t%2d", i+1);
64: if (proctable[i].replic != NONE)
65: printf("x%d", proctable[i].replic);
66: printf("\t%s, ", proctable[i].name);
67: for (k = strlen(proctable[i].name)+1; k < 10; k++)
68: putchar(' ');
69: k = proctable[i].nrstates;
70: printf("%d state%s", k, (k!=1)?"s":"");
71: if ((k = proctable[i].unreach) > 0)
72: printf(" (%d unreachable state%s)", k, (k>1)?"s":"");
73: putchar('\n');
74: }
75: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.