Add more info to the kprof and fix a big
authorRonald G. Minnich <rminnich@google.com>
Fri, 25 Apr 2014 21:38:31 +0000 (14:38 -0700)
committerRonald G. Minnich <rminnich@google.com>
Fri, 25 Apr 2014 21:38:31 +0000 (14:38 -0700)
In real use, turns out we want that PC. We don't want to
merge the common functions from the kernel either.
We may even decide to stop the >> 3 on the PC, depending.
Memory is cheap.

Fix a bug that came up because of dealing with snprintf behavior,
long story.

Signed-off-by: Ronald G. Minnich <rminnich@google.com>
kern/drivers/dev/kprof.c

index 6d2c484..9a462a9 100644 (file)
@@ -39,8 +39,8 @@ struct
  * small subtle bit here. You have to convert offset FROM FORMATSIZE units
  * to CELLSIZE units in a few places.
  */
-char *outformat = "%30s %016llx\n";
-#define FORMATSIZE 48
+char *outformat = "%016llx %29s %016llx\n";
+#define FORMATSIZE 64
 enum{
        Kprofdirqid,
        Kprofdataqid,
@@ -198,8 +198,9 @@ kprofread(struct chan *c, void *va, long n, int64_t off)
                        w = *bp++;
                        pc = kprof.minpc + ((offset/FORMATSIZE)<<LRES);
                        name = get_fn_name(pc);
-                       snprintf(print, sizeof(print), outformat, name, w);
+                       snprintf(print, sizeof(print), outformat, pc, name, w);
                        memmove(a, print, FORMATSIZE);
+                       a += FORMATSIZE;
                        n -= FORMATSIZE;
                        ret += FORMATSIZE;
                }