diff options
| author | Bobby <[email protected]> | 2026-02-24 03:58:22 +0530 |
|---|---|---|
| committer | Bobby <[email protected]> | 2026-02-24 03:58:22 +0530 |
| commit | 6a7363663f34a031f3138802eeab1d5e569a753d (patch) | |
| tree | 705894cef49b9402b2c9460a85682bcebed376fd /system | |
| parent | 3df380d213dad9684cbe71003105fc53dd86a684 (diff) | |
| download | akiba-6a7363663f34a031f3138802eeab1d5e569a753d.tar.xz akiba-6a7363663f34a031f3138802eeab1d5e569a753d.zip | |
commit for arch change
Diffstat (limited to 'system')
| -rw-r--r-- | system/libraries/format/format.zig | 7 | ||||
| -rw-r--r-- | system/libraries/kata/kata.zig | 5 | ||||
| -rw-r--r-- | system/libraries/sys/sys.zig | 4 | ||||
| -rw-r--r-- | system/pulse/pulse.zig | 10 | ||||
| -rw-r--r-- | system/shinigami/shinigami.zig | 17 | ||||
| -rw-r--r-- | system/shinigami/shinigami.zon | 9 |
6 files changed, 49 insertions, 3 deletions
diff --git a/system/libraries/format/format.zig b/system/libraries/format/format.zig index 02a5632..f9c8068 100644 --- a/system/libraries/format/format.zig +++ b/system/libraries/format/format.zig @@ -20,3 +20,10 @@ pub const colorf = printmod.colorf; pub const Table = tablemod.Table; pub const Column = tablemod.Column; pub const Alignment = tablemod.Alignment; + +/// Print a u64 value as decimal +pub fn print_u64(num: u64) void { + var buf: [20]u8 = undefined; + const str = int.toStr(num, &buf); + print(str); +} diff --git a/system/libraries/kata/kata.zig b/system/libraries/kata/kata.zig index 39f4556..1144294 100644 --- a/system/libraries/kata/kata.zig +++ b/system/libraries/kata/kata.zig @@ -43,3 +43,8 @@ pub fn wait(pid: u32) Error!u64 { yield(); } } + +/// Reap zombie katas - returns number of zombies reaped +pub fn reap() u64 { + return sys.syscall(.reap, .{}); +} diff --git a/system/libraries/sys/sys.zig b/system/libraries/sys/sys.zig index b080a90..56186f1 100644 --- a/system/libraries/sys/sys.zig +++ b/system/libraries/sys/sys.zig @@ -26,6 +26,7 @@ pub const Invocation = enum(u64) { uptime = 0x11, gettime = 0x12, diskinfo = 0x13, + reap = 0x14, }; pub inline fn syscall(invocation: Invocation, args: anytype) u64 { @@ -48,8 +49,7 @@ pub inline fn syscall(invocation: Invocation, args: anytype) u64 { [arg3] "{r10}" (arg3), [arg4] "{r8}" (arg4), [arg5] "{r9}" (arg5), - : .{ .rcx = true, .r11 = true, .memory = true } - ); + : .{ .rcx = true, .r11 = true, .memory = true }); } inline fn toU64(value: anytype) u64 { diff --git a/system/pulse/pulse.zig b/system/pulse/pulse.zig index 3ef1091..b917f8c 100644 --- a/system/pulse/pulse.zig +++ b/system/pulse/pulse.zig @@ -8,8 +8,16 @@ export fn main(pc: u32, pv: [*]const [*:0]const u8) u8 { _ = pc; _ = pv; + // Spawn Shinigami - the zombie reaper + _ = kata.spawn("/system/shinigami/shinigami.gen") catch { + format.println("Pulse: FATAL - Failed to spawn Shinigami"); + return 1; + }; + format.println("Pulse: Shinigami started"); + + // Main shell loop while (true) { - const shell_pid = kata.spawn("/system/ash/ash.akiba") catch { + const shell_pid = kata.spawn("/system/ash/ash.gen") catch { format.println("Pulse: Failed to spawn shell"); kata.yield(); continue; diff --git a/system/shinigami/shinigami.zig b/system/shinigami/shinigami.zig new file mode 100644 index 0000000..4f4973c --- /dev/null +++ b/system/shinigami/shinigami.zig @@ -0,0 +1,17 @@ +//! Shinigami - The Soul Reaper +//! Background service that reaps zombie katas + +const kata = @import("kata"); + +export fn main(pc: u32, pv: [*]const [*:0]const u8) u8 { + _ = pc; + _ = pv; + + // Shinigami runs forever, reaping zombie souls + while (true) { + _ = kata.reap(); + kata.yield(); + } + + return 0; +} diff --git a/system/shinigami/shinigami.zon b/system/shinigami/shinigami.zon new file mode 100644 index 0000000..2516af3 --- /dev/null +++ b/system/shinigami/shinigami.zon @@ -0,0 +1,9 @@ +.{ + .name = "shinigami", + .version = "0.1.0", + .dependencies = .{ + .sys, + .kata, + }, + .entry = "shinigami.zig", +} |
