slab: Add an interface for slab tracing
authorBarret Rhoden <brho@cs.berkeley.edu>
Tue, 9 Oct 2018 21:35:44 +0000 (17:35 -0400)
committerBarret Rhoden <brho@cs.berkeley.edu>
Tue, 9 Oct 2018 21:45:56 +0000 (17:45 -0400)
commit39c77c452bcdf514e511622eef22f1468cc7f2d2
treec7e619635e91342a211ae714863fd04a417d6e69
parent080a0a8bc20ccd9a7378c0600de68a5fd2e39253
slab: Add an interface for slab tracing

Usage:

(akaros) / $ echo start kpages_8192 > \#mem/slab_trace

(run some test)

(akaros) / $ echo stop kpages_8192 > \#mem/slab_trace
(akaros) / $ echo print kpages_8192 > \#mem/slab_trace
(akaros) / $ cat \#mem/slab_trace

Dumping outstanding allocs from kpages_8192
-------------------------
Obj 0xffff8000042be000, from PID 28 /bin/cs: (null), 0x00003000003059cb:
----
 #01 [<0xffffffffc205c541>] in kmem_cache_alloc
 #02 [<0xffffffffc2002297>] in arena_alloc
 #03 [<0xffffffffc204ec75>] in kpages_alloc
 #04 [<0xffffffffc2126098>] in __pml_walk
 #05 [<0xffffffffc2126126>] in __pml_walk
 #06 [<0xffffffffc2126126>] in __pml_walk
 #07 [<0xffffffffc2126be1>] in pgdir_walk
 #08 [<0xffffffffc20159e9>] in map_page_at_addr
 #09 [<0xffffffffc2016820>] in __hpf
 #10 [<0xffffffffc2017a7e>] in handle_page_fault
 #11 [<0xffffffffc212a6c3>] in trap

etc.

There should be one user of slab_trace at a time.  If you have multiple
users, you might not get the results you want and could lose your trace
data.  Under the hood, the data buffer is tied to slab_trace, not to an
FD.  If we attach it to an FD, then you can't access it easily from the
console, since you'd need to pass that FD between the shell's
sub-processes - not worth the effort.

Signed-off-by: Barret Rhoden <brho@cs.berkeley.edu>
kern/drivers/dev/mem.c