|
|
1.1 root 1: /* @(#)mon.c 4.1 (Berkeley) 12/21/80 */
2: monitor(lowpc, highpc, buf, bufsiz, cntsiz)
3: char *lowpc, *highpc;
4: int *buf, bufsiz;
5: {
6: register o;
7: static *sbuf, ssiz;
8: struct phdr {
9: int *lpc;
10: int *hpc;
11: int ncnt;
12: };
13: struct cnt {
14: int *pc;
15: long ncall;
16: };
17:
18: if (lowpc == 0) {
19: profil(0, 0, 0, 0);
20: o = creat("mon.out", 0666);
21: write(o, sbuf, ssiz);
22: close(o);
23: return;
24: }
25: sbuf = buf;
26: ssiz = bufsiz;
27: buf[0] = (int)lowpc;
28: buf[1] = (int)highpc;
29: buf[2] = cntsiz;
30: o = sizeof(struct phdr) + cntsiz*sizeof(struct cnt);
31: buf = (int *) (((int)buf) + o);
32: bufsiz -= o;
33: if (bufsiz<=0)
34: return;
35: o = ((highpc - lowpc)>>1);
36: if(bufsiz < o)
37: o = ((float) bufsiz / o) * 32768;
38: else
39: o = 0177777;
40: profil(buf, bufsiz, lowpc, o);
41: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.