git: 9front

Download patch

ref: 6f570bb0e24c258664771b9573f21593c3009352
parent: 40efcbd86d0285e70cbeacebc7758bb5f9437862
author: aiju <devnull@localhost>
date: Thu Sep 27 11:06:42 EDT 2012

hjfs: statw command

--- a/sys/src/cmd/hjfs/cons.c
+++ b/sys/src/cmd/hjfs/cons.c
@@ -166,6 +166,36 @@
 	return 1;
 }
 
+int
+cmdstatw(int, char **)
+{
+	uvlong n;
+	uvlong i;
+	int j;
+	Buf *b, *sb;
+
+	wlock(fsmain);
+	sb = getbuf(fsmain->d, SUPERBLK, TSUPERBLOCK, 0);
+	if(sb == nil){
+		wunlock(fsmain);
+		return -1;
+	}
+	n = 0;
+	for(i = sb->sb.fstart; i < sb->sb.fend; i++){
+		b = getbuf(fsmain->d, i, TREF, 0);
+		if(b == nil)
+			continue;
+		for(j = 0; j < REFPERBLK; j++)
+			if(b->refs[j] == 0)
+				n++;
+		putbuf(b);
+	}
+	dprint("hjfs: free %uld, used %uld, total %uld\n", n, sb->sb.size, sb->sb.size - n);
+	putbuf(sb);
+	wunlock(fsmain);
+	return 1;
+}
+
 extern int cmdnewuser(int, char **);
 
 Cmd cmds[] = {
@@ -178,6 +208,7 @@
 	{"halt", 1, cmdhalt},
 	{"newuser", 0, cmdnewuser},
 	{"echo", 2, cmdecho},
+	{"statw", 1, cmdstatw},
 };
 
 
--