arena: let the kernel call kmemstat()

For debugging.  The user's interface is #mem/kmemstat.

Signed-off-by: Barret Rhoden <brho@cs.berkeley.edu>
diff --git a/kern/drivers/dev/mem.c b/kern/drivers/dev/mem.c
index 8ea2189..946452e 100644
--- a/kern/drivers/dev/mem.c
+++ b/kern/drivers/dev/mem.c
@@ -335,6 +335,13 @@
 	return sza;
 }
 
+void kmemstat(void)
+{
+	struct sized_alloc *sza = build_kmemstat();
+
+	printk("%s", sza->buf);
+}
+
 static struct chan *mem_open(struct chan *c, int omode)
 {
 	if (c->qid.type & QTDIR) {
diff --git a/kern/include/arena.h b/kern/include/arena.h
index 1950cc2..a6e64d5 100644
--- a/kern/include/arena.h
+++ b/kern/include/arena.h
@@ -111,6 +111,7 @@
 
 size_t arena_amt_free(struct arena *arena);
 size_t arena_amt_total(struct arena *arena);
+void kmemstat(void);
 
 /* All lists that track the existence of arenas, slabs, and the connections
  * between them are tracked by a global qlock.  For the most part, slabs/arenas