1: monitor(lowpc, highpc, buf, bufsiz, cntsiz) 2: char *lowpc, *highpc; 3: int *buf, bufsiz; 4: { 5: register char *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: if (nargs() <= 4) 16: cntsiz = 0; 17: ssiz = bufsiz; 18: buf[0] = lowpc; 19: buf[1] = highpc; 20: buf[2] = cntsiz; 21: sbuf = buf; 22: buf =+ 3*(cntsiz+1); 23: bufsiz =- 3*(cntsiz+1); 24: if (bufsiz<=0) 25: return; 26: o = ((highpc - lowpc)>>1) & 077777; 27: if(bufsiz < o) 28: o = ldiv(bufsiz, 0, o<<1); else 29: o = 077777; 30: profil(buf, bufsiz<<1, lowpc, o<<1); 31: }