1: monitor(lowpc, highpc, buf, bufsiz, cntsiz) 2: char *lowpc, *highpc; 3: int *buf, bufsiz; 4: { 5: register o; 6: static *sbuf, ssiz; 7: 8: if (lowpc == 0) { 9: profil(0, 0, 0, 0); 10: o = creat("mon.out", 0666); 11: write(o, sbuf, ssiz<<1); 12: close(o); 13: return; 14: } 15: ssiz = bufsiz; 16: buf[0] = (int)lowpc; 17: buf[1] = (int)highpc; 18: buf[2] = cntsiz; 19: sbuf = buf; 20: buf += 3*(cntsiz+1); 21: bufsiz -= 3*(cntsiz+1); 22: if (bufsiz<=0) 23: return; 24: o = ((highpc - lowpc)>>1) & 077777; 25: if(bufsiz < o) 26: o = ((long)bufsiz<<15) / o; 27: else 28: o = 077777; 29: profil(buf, bufsiz<<1, lowpc, o<<1); 30: }