ref: 45b5336f887b69365f90aae42cd0c66542d1a8e9
parent: 33b0e1bb8137ceb835e9cae939171ea27d02e1d6
author: Ori Bernstein <ori@eigenstate.org>
date: Mon May 27 00:17:29 EDT 2024
gefs: add command to show free ranges on console
--- a/sys/src/cmd/gefs/cons.c
+++ b/sys/src/cmd/gefs/cons.c
@@ -338,6 +338,24 @@
}
static void
+showfree(int fd, char **, int)
+{
+ Arange *r;
+ Arena *a;
+ int i;
+
+ for(i = 0; i < fs->narena; i++){
+ a = &fs->arenas[i];
+ qlock(a);
+ fprint(fd, "arena %d %llx+%llx{\n", i, a->h0->bp.addr, a->size);
+ for(r = (Arange*)avlmin(a->free); r != nil; r = (Arange*)avlnext(r))
+ fprint(fd, "\t%llx..%llx (%llx)\n", r->off, r->off+r->len, r->len);
+ fprint(fd, "}\n");
+ qunlock(a);
+ }
+}
+
+static void
unreserve(int fd, char **ap, int)
{
if(strcmp(ap[0], "on") == 0)
@@ -387,6 +405,7 @@
{.name="show", .sub="tree", .minarg=0, .maxarg=1, .fn=showtree},
{.name="show", .sub="users", .minarg=0, .maxarg=0, .fn=showusers},
{.name="show", .sub="bstate", .minarg=0, .maxarg=0, .fn=showbstate},
+ {.name="show", .sub="free", .minarg=0, .maxarg=0, .fn=showfree},
{.name="debug", .sub=nil, .minarg=0, .maxarg=1, .fn=setdbg},
{.name="save", .sub="trace", .minarg=0, .maxarg=1, .fn=savetrace},
{.name=nil, .sub=nil},