44 lines
906 B
C
44 lines
906 B
C
/* Copyright (c) 1984 AT&T */
|
|
/* All Rights Reserved */
|
|
|
|
/* THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF AT&T */
|
|
/* The copyright notice above does not evidence any */
|
|
/* actual or intended publication of such source code. */
|
|
|
|
#ifndef lint
|
|
static char sccsid[] = "@(#)profile.c 1.1 92/07/30 SMI"; /* from S5R3.1 1.6 */
|
|
#endif
|
|
|
|
char *mktemp();
|
|
|
|
monitor(lowpc, highpc, buf, bufsiz, cntsiz)
|
|
char *lowpc, *highpc;
|
|
int *buf, bufsiz;
|
|
{
|
|
register o;
|
|
static *sbuf, ssiz;
|
|
|
|
if (lowpc == 0) {
|
|
profil(0, 0, 0, 0);
|
|
o = creat(mktemp("profXXXXXX"), 0666);
|
|
write(o, sbuf, ssiz<<1);
|
|
close(o);
|
|
return;
|
|
}
|
|
ssiz = bufsiz;
|
|
buf[0] = lowpc;
|
|
buf[1] = highpc;
|
|
buf[2] = cntsiz;
|
|
sbuf = buf;
|
|
buf += 3*(cntsiz+1);
|
|
bufsiz -= 3*(cntsiz+1);
|
|
if (bufsiz<=0)
|
|
return;
|
|
o = ((highpc - lowpc)>>1) & 077777;
|
|
if(bufsiz < o)
|
|
o = ((long)bufsiz<<15) / o;
|
|
else
|
|
o = 077777;
|
|
profil(buf, bufsiz<<1, lowpc, o<<1);
|
|
}
|