diff options
author | Himbeer <himbeer@disroot.org> | 2024-08-01 19:37:02 +0200 |
---|---|---|
committer | Himbeer <himbeer@disroot.org> | 2024-08-01 19:37:02 +0200 |
commit | d4726722a90e61e45c73dbcb575d22f2587ad3c6 (patch) | |
tree | bd7b465c3d5e4ed865d406025ca69db8d8134e14 | |
parent | fd79b936652e63279bc8f622be2d26a400b56faa (diff) |
os: Add message passing syscalls (join, leave, pass, receive)
-rw-r--r-- | src/os.zig | 20 |
1 files changed, 20 insertions, 0 deletions
@@ -97,3 +97,23 @@ pub fn devicesByKind(kind: hwinfo.DevKind, devices: []hwinfo.Dev) !usize { if (result.error_code != 0) return SyscallError.Kernel; return result.value; } + +pub fn join(channel: usize) !void { + const result = ecall(100008, .{channel}); + if (result.error_code != 0) return SyscallError.Kernel; +} + +pub fn leave(channel: usize) void { + _ = ecall(100009, .{channel}); +} + +pub fn pass(channel: usize, receiver: u16, identify: bool, bytes: []const u8) !void { + const result = ecall(100010, .{ channel, receiver, identify, bytes.ptr, bytes.len }); + if (result.error_code != 0) return SyscallError.Kernel; +} + +pub fn receive(channel: usize, sender: ?*u16, buffer: []u8) !usize { + const result = ecall(100011, .{ channel, sender, buffer.ptr, buffer.len }); + if (result.error_code != 0) return SyscallError.Kernel; + return result.value; +} |