Bell 32V development
[unix-history] / usr / src / libc / gen / mon.c
old mode 100644 (file)
new mode 100755 (executable)
index eacafdf..a906c65
@@ -4,27 +4,37 @@ int *buf, bufsiz;
 {
        register o;
        static *sbuf, ssiz;
 {
        register o;
        static *sbuf, ssiz;
+       struct phdr {
+               int *lpc;
+               int *hpc;
+               int ncnt;
+       };
+       struct cnt {
+               int *pc;
+               long ncall;
+       };
 
        if (lowpc == 0) {
                profil(0, 0, 0, 0);
                o = creat("mon.out", 0666);
 
        if (lowpc == 0) {
                profil(0, 0, 0, 0);
                o = creat("mon.out", 0666);
-               write(o, sbuf, ssiz<<1);
+               write(o, sbuf, ssiz);
                close(o);
                return;
        }
                close(o);
                return;
        }
+       sbuf = buf;
        ssiz = bufsiz;
        buf[0] = (int)lowpc;
        buf[1] = (int)highpc;
        buf[2] = cntsiz;
        ssiz = bufsiz;
        buf[0] = (int)lowpc;
        buf[1] = (int)highpc;
        buf[2] = cntsiz;
-       sbuf = buf;
-       buf += 3*(cntsiz+1);
-       bufsiz -= 3*(cntsiz+1);
+       o = sizeof(struct phdr) + cntsiz*sizeof(struct cnt);
+       buf = (int *) (((int)buf) + o);
+       bufsiz -= o;
        if (bufsiz<=0)
                return;
        o = ((highpc - lowpc)>>1) & 077777;
        if(bufsiz < o)
                o = ((long)bufsiz<<15) / o;
        else
        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);
+               o = 0177777;
+       profil(buf, bufsiz, lowpc, o);
 }
 }