aboutsummaryrefslogtreecommitdiff
path: root/system
diff options
context:
space:
mode:
authorBobby <[email protected]>2026-02-24 03:58:22 +0530
committerBobby <[email protected]>2026-02-24 03:58:22 +0530
commit6a7363663f34a031f3138802eeab1d5e569a753d (patch)
tree705894cef49b9402b2c9460a85682bcebed376fd /system
parent3df380d213dad9684cbe71003105fc53dd86a684 (diff)
downloadakiba-6a7363663f34a031f3138802eeab1d5e569a753d.tar.xz
akiba-6a7363663f34a031f3138802eeab1d5e569a753d.zip
commit for arch change
Diffstat (limited to 'system')
-rw-r--r--system/libraries/format/format.zig7
-rw-r--r--system/libraries/kata/kata.zig5
-rw-r--r--system/libraries/sys/sys.zig4
-rw-r--r--system/pulse/pulse.zig10
-rw-r--r--system/shinigami/shinigami.zig17
-rw-r--r--system/shinigami/shinigami.zon9
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",
+}