simulator: Implement Simulator.dumpFiles to easily inspect the in-memory file system's state

This commit is contained in:
2026-05-23 17:13:39 +02:00
parent c2c7a3ac83
commit f50f17f1e0
3 changed files with 30 additions and 0 deletions
+20
View File
@@ -414,3 +414,23 @@ pub fn fileSize(self: *FileSystem, open_file: *OpenFile) usize {
_ = self; _ = self;
return open_file.entity.bytes.items.len; return open_file.entity.bytes.items.len;
} }
fn dumpEntity(entity: *Entity, depth: u32) void {
if (entity.is_dir) {
for (entity.children.items) |item| {
for (0..depth) |_|
std.debug.print(" ", .{});
std.debug.print("{s}\n", .{ item.getName() });
dumpEntity(item.addr, depth+1);
}
} else {
for (0..depth) |_|
std.debug.print(" ", .{});
std.debug.print("[{s}]", .{ entity.bytes.items });
}
}
pub fn dump(self: *FileSystem) void {
dumpEntity(self.root, 0);
std.debug.print("\n", .{});
}
+4
View File
@@ -381,3 +381,7 @@ pub fn closeSocket(self: *Node, handle: Handle) HandleError!void {
} }
desc.kind = .unused; desc.kind = .unused;
} }
pub fn dumpFiles(self: *Node) void {
self.file_system.dump();
}
+6
View File
@@ -77,6 +77,12 @@ pub fn scheduleOne(self: *Simulator) bool {
return self.scheduler.scheduleOne(); return self.scheduler.scheduleOne();
} }
pub fn dumpFiles(self: *Simulator) void {
for (self.nodes.items) |node| {
node.dumpFiles();
}
}
// Reads the first word of a command // Reads the first word of a command
// "program arg1 arg2 arg3" -> "program" // "program arg1 arg2 arg3" -> "program"
fn extractProgramNameFromCommand(command: []const u8) ?[]const u8 { fn extractProgramNameFromCommand(command: []const u8) ?[]const u8 {