From 9b7e4b535c87c32d81fab88b92c967b04188212f Mon Sep 17 00:00:00 2001 From: Andrea Orru Date: Thu, 15 Mar 2018 02:22:03 -0700 Subject: [PATCH] More precise naming --- std/os/zen.zig | 67 +++++++++++++++++++++++++++----------------------- 1 file changed, 36 insertions(+), 31 deletions(-) diff --git a/std/os/zen.zig b/std/os/zen.zig index 21e7d8f73..7d054a0e4 100644 --- a/std/os/zen.zig +++ b/std/os/zen.zig @@ -3,44 +3,49 @@ /////////////////////////// pub const Message = struct { - from: MailboxId, - to: MailboxId, - payload: usize, + sender: MailboxId, + receiver: MailboxId, + payload: usize, - pub fn from(mailbox_id: MailboxId) Message { + pub fn withReceiver(mailbox_id: &const MailboxId) Message { return Message { - .from = mailbox_id, - .to = undefined, - .payload = undefined, + .sender = undefined, + .receiver = *mailbox_id, + .payload = undefined, }; } }; pub const MailboxId = union(enum) { - Me, + This, Kernel, Port: u16, //Thread: u16, }; -////////////////////////////// -//// Reserved mailboxes //// -////////////////////////////// +/////////////////////////////////////// +//// Ports reserved for services //// +/////////////////////////////////////// -pub const MBOX_TERMINAL = MailboxId { .Port = 0 }; +pub const Service = struct { + pub const Terminal = MailboxId { .Port = 0 }; + pub const Keyboard = MailboxId { .Port = 1 }; +}; /////////////////////////// //// Syscall numbers //// /////////////////////////// -pub const SYS_exit = 0; -pub const SYS_createPort = 1; -pub const SYS_send = 2; -pub const SYS_receive = 3; -pub const SYS_map = 4; -pub const SYS_createThread = 5; +pub const Syscall = enum { + exit = 0, + createPort = 1, + send = 2, + receive = 3, + map = 4, + createThread = 5, +}; //////////////////// @@ -48,28 +53,28 @@ pub const SYS_createThread = 5; //////////////////// pub fn exit(status: i32) noreturn { - _ = syscall1(SYS_exit, @bitCast(usize, isize(status))); + _ = syscall1(Syscall.exit, @bitCast(usize, isize(status))); unreachable; } pub fn createPort(id: u16) void { - _ = syscall1(SYS_createPort, id); + _ = syscall1(Syscall.createPort, id); } pub fn send(message: &const Message) void { - _ = syscall1(SYS_send, @ptrToInt(message)); + _ = syscall1(Syscall.send, @ptrToInt(message)); } pub fn receive(destination: &Message) void { - _ = syscall1(SYS_receive, @ptrToInt(destination)); + _ = syscall1(Syscall.receive, @ptrToInt(destination)); } pub fn map(v_addr: usize, p_addr: usize, size: usize, writable: bool) bool { - return syscall4(SYS_map, v_addr, p_addr, size, usize(writable)) != 0; + return syscall4(Syscall.map, v_addr, p_addr, size, usize(writable)) != 0; } pub fn createThread(function: fn()void) u16 { - return u16(syscall1(SYS_createThread, @ptrToInt(function))); + return u16(syscall1(Syscall.createThread, @ptrToInt(function))); } @@ -77,20 +82,20 @@ pub fn createThread(function: fn()void) u16 { //// Syscall stubs //// ///////////////////////// -pub inline fn syscall0(number: usize) usize { +inline fn syscall0(number: usize) usize { return asm volatile ("int $0x80" : [ret] "={eax}" (-> usize) : [number] "{eax}" (number)); } -pub inline fn syscall1(number: usize, arg1: usize) usize { +inline fn syscall1(number: usize, arg1: usize) usize { return asm volatile ("int $0x80" : [ret] "={eax}" (-> usize) : [number] "{eax}" (number), [arg1] "{ecx}" (arg1)); } -pub inline fn syscall2(number: usize, arg1: usize, arg2: usize) usize { +inline fn syscall2(number: usize, arg1: usize, arg2: usize) usize { return asm volatile ("int $0x80" : [ret] "={eax}" (-> usize) : [number] "{eax}" (number), @@ -98,7 +103,7 @@ pub inline fn syscall2(number: usize, arg1: usize, arg2: usize) usize { [arg2] "{edx}" (arg2)); } -pub inline fn syscall3(number: usize, arg1: usize, arg2: usize, arg3: usize) usize { +inline fn syscall3(number: usize, arg1: usize, arg2: usize, arg3: usize) usize { return asm volatile ("int $0x80" : [ret] "={eax}" (-> usize) : [number] "{eax}" (number), @@ -107,7 +112,7 @@ pub inline fn syscall3(number: usize, arg1: usize, arg2: usize, arg3: usize) usi [arg3] "{ebx}" (arg3)); } -pub inline fn syscall4(number: usize, arg1: usize, arg2: usize, arg3: usize, arg4: usize) usize { +inline fn syscall4(number: usize, arg1: usize, arg2: usize, arg3: usize, arg4: usize) usize { return asm volatile ("int $0x80" : [ret] "={eax}" (-> usize) : [number] "{eax}" (number), @@ -117,7 +122,7 @@ pub inline fn syscall4(number: usize, arg1: usize, arg2: usize, arg3: usize, arg [arg4] "{esi}" (arg4)); } -pub inline fn syscall5(number: usize, arg1: usize, arg2: usize, arg3: usize, +inline fn syscall5(number: usize, arg1: usize, arg2: usize, arg3: usize, arg4: usize, arg5: usize) usize { return asm volatile ("int $0x80" @@ -130,7 +135,7 @@ pub inline fn syscall5(number: usize, arg1: usize, arg2: usize, arg3: usize, [arg5] "{edi}" (arg5)); } -pub inline fn syscall6(number: usize, arg1: usize, arg2: usize, arg3: usize, +inline fn syscall6(number: usize, arg1: usize, arg2: usize, arg3: usize, arg4: usize, arg5: usize, arg6: usize) usize { return asm volatile ("int $0x80"