diff options
author | Himbeer <himbeer@disroot.org> | 2024-08-02 19:02:41 +0200 |
---|---|---|
committer | Himbeer <himbeer@disroot.org> | 2024-08-02 19:02:41 +0200 |
commit | 254f8939bba95316b9040e0f245b36894e6c1426 (patch) | |
tree | 33902f24cd58b3d9f0dcb8aedb7377fea8e06e7d | |
parent | e1cfddc48ae3f439b898405bbe165efcde0c92e6 (diff) |
-rw-r--r-- | src/os.zig | 19 |
1 files changed, 15 insertions, 4 deletions
@@ -99,22 +99,33 @@ pub fn devicesByKind(kind: hwinfo.DevKind, devices: []hwinfo.Dev) !usize { return result.value; } +pub fn unlock(reg_addr: usize, writable: bool) !usize { + const result = ecall(100008, .{ reg_addr, writable }); + if (result.error_code != 0) return SyscallError.Kernel; + return result.value; +} + +pub fn lock(vaddr: usize) !void { + const result = ecall(100009, .{vaddr}); + if (result.error_code != 0) return SyscallError.Kernel; +} + pub fn join(channel: usize) !void { - const result = ecall(100008, .{channel}); + const result = ecall(100010, .{channel}); if (result.error_code != 0) return SyscallError.Kernel; } pub fn leave(channel: usize) void { - _ = ecall(100009, .{channel}); + _ = ecall(100011, .{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 }); + const result = ecall(100012, .{ 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, @intFromPtr(sender), buffer.ptr, buffer.len }); + const result = ecall(100013, .{ channel, @intFromPtr(sender), buffer.ptr, buffer.len }); if (result.error_code != 0) return SyscallError.Kernel; return result.value; } |