|
|
1.1 ! root 1: int *_mcbase; ! 2: int _setmonexit = 1; ! 3: ! 4: _monexit() ! 5: { ! 6: monitor((char *)0, (char *)0, (int *)0, 0, 0); ! 7: } ! 8: ! 9: monitor(lowpc, highpc, buf, bufsiz, cntsiz) ! 10: char *lowpc, *highpc; ! 11: int *buf, bufsiz; ! 12: { ! 13: register o; ! 14: static *sbuf, ssiz; ! 15: struct phdr { ! 16: int *lpc; ! 17: int *hpc; ! 18: int ncnt; ! 19: }; ! 20: struct cnt { ! 21: int *pc; ! 22: long ncall; ! 23: }; ! 24: ! 25: if (lowpc == 0) { ! 26: profil((short *)0, 0, 0, 0); ! 27: o = creat("mon.out", 0666); ! 28: write(o, sbuf, ssiz); ! 29: close(o); ! 30: return; ! 31: } ! 32: if(_setmonexit){ ! 33: _setmonexit = 0; ! 34: onexit(_monexit); ! 35: } ! 36: sbuf = buf; ! 37: ssiz = bufsiz; ! 38: buf[0] = (int)lowpc; ! 39: buf[1] = (int)highpc; ! 40: buf[2] = cntsiz; ! 41: _mcbase = (int *) (((int)buf) + sizeof(struct phdr)); ! 42: buf = (int *) (((int)_mcbase) + (o = cntsiz*sizeof(struct cnt))); ! 43: bufsiz -= o + sizeof(struct phdr); ! 44: memset((char *)_mcbase, 0, o); /* clear counts */ ! 45: if (bufsiz<=0) ! 46: return; ! 47: o = bufsiz*65536.0/(highpc - lowpc); ! 48: profil(buf, bufsiz, lowpc, o); ! 49: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.