From b1c76c405bec4bb55a4b9185179bca6b658b3e16 Mon Sep 17 00:00:00 2001 From: Jack Halford Date: Tue, 7 Jan 2020 17:47:56 +0100 Subject: [PATCH] console: refactor to print available commands --- src/console.zig | 38 ++++++++++++++++++++++++-------------- src/pci/pci.zig | 2 +- 2 files changed, 25 insertions(+), 15 deletions(-) diff --git a/src/console.zig b/src/console.zig index ff3585b..e2e1dc2 100644 --- a/src/console.zig +++ b/src/console.zig @@ -5,24 +5,34 @@ var input_ring: Ring(u8) = undefined; var command: [10]u8 = undefined; var command_len: usize = 0; -fn sleep_for_2() void { +fn sleep2() void { task.usleep(2 * 1000 * 1000) catch unreachable; } +fn t_sleep2() void { + _ = task.new(@ptrToInt(sleep2)) catch unreachable; +} + +const Command = struct { + name: []const u8, + f: fn () void, +}; + +const commands = [_]Command{ + Command{ .name = "clear", .f = clear }, + Command{ .name = "paging", .f = x86.paging.format }, + Command{ .name = "memory", .f = x86.pmem.format }, + Command{ .name = "tasks", .f = task.format }, + Command{ .name = "lspci", .f = pci.lspci }, + Command{ .name = "sleep2", .f = sleep2 }, + Command{ .name = "t-sleep2", .f = t_sleep2 }, + Command{ .name = "uptime", .f = time.uptime }, +}; + fn execute(input: []u8) void { - const eql = std.mem.eql; - if (eql(u8, input, "clear")) return vga.clear(); - if (eql(u8, input, "paging")) return x86.paging.format(); - if (eql(u8, input, "memory")) return x86.pmem.format(); - if (eql(u8, input, "tasks")) return task.format(); - if (eql(u8, input, "lspci")) return pci.lspci(); - if (eql(u8, input, "sleep2")) return sleep_for_2(); - if (eql(u8, input, "t-sleep2")) { - _ = task.new(@ptrToInt(sleep_for_2)) catch unreachable; - return; - } - if (eql(u8, input, "uptime")) return time.uptime(); - println("{}: command not found", input); + for (commands) |c| if (std.mem.eql(u8, input, c.name)) return c.f(); + println("{}: command not found, list of available commands:", input); + for (commands) |c| println("{}", c.name); } pub fn keypress(char: u8) void { diff --git a/src/pci/pci.zig b/src/pci/pci.zig index fd7150c..292dcef 100644 --- a/src/pci/pci.zig +++ b/src/pci/pci.zig @@ -141,7 +141,7 @@ const Driver = struct { init: fn (PciDevice) void, }; -pub var Drivers = [_]Driver{ +const Drivers = [_]Driver{ Driver{ .name = "virtio-blk", .class = 0x1, .subclass = 0x0, .vendor = 0x1af4, .subsystem = 0x2, .init = virtio.init }, Driver{ .name = "ide-ata", .class = 0x1, .subclass = 0x1, .init = ide.init }, };