From 81060aabdc0ab1ee6ba8de68975b65956f5a42c3 Mon Sep 17 00:00:00 2001 From: Brendan Hansen Date: Fri, 3 Dec 2021 15:44:30 -0600 Subject: [PATCH] moved process.onyx to core.os --- core/{io => os}/process.onyx | 18 +++++++++++------- core/runtime/onyx_run.onyx | 14 +++++++------- scripts/run_tests.onyx | 6 +++--- 3 files changed, 21 insertions(+), 17 deletions(-) rename core/{io => os}/process.onyx (80%) diff --git a/core/io/process.onyx b/core/os/process.onyx similarity index 80% rename from core/io/process.onyx rename to core/os/process.onyx index e1e7dfda..f22aee04 100644 --- a/core/io/process.onyx +++ b/core/os/process.onyx @@ -1,4 +1,4 @@ -package core.io +package core.os // Some thoughts about processes and the API. // @@ -8,15 +8,19 @@ package core.io // -#local runtime :: package runtime #if runtime.Runtime != runtime.Runtime_Onyx { #error "This file can only be included in the 'onyx' runtime, because Wasi has not defined how to spawn and manage processes."; } +#local { + runtime :: package runtime + io :: package core.io +} + Process :: struct { Handle :: #distinct i64; - use stream: Stream; + use stream: io.Stream; process_handle: Handle; } @@ -41,8 +45,8 @@ process_destroy :: (use p: ^Process) => { runtime.__process_destroy(process_handle); } -#local process_stream_vtable := Stream_Vtable.{ - read = (use p: ^Process, buffer: [] u8) -> (Error, u32) { +#local process_stream_vtable := io.Stream_Vtable.{ + read = (use p: ^Process, buffer: [] u8) -> (io.Error, u32) { // Read from the process stdout if cast(i64) process_handle == 0 do return .BadFile, 0; @@ -50,7 +54,7 @@ process_destroy :: (use p: ^Process) => { return .None, bytes_read; }, - write = (use p: ^Process, buffer: [] u8) -> (Error, u32) { + write = (use p: ^Process, buffer: [] u8) -> (io.Error, u32) { // Write to the process stdin if cast(i64) process_handle == 0 do return .BadFile, 0; @@ -58,7 +62,7 @@ process_destroy :: (use p: ^Process) => { return .None, bytes_written; }, - close = (use p: ^Process) -> Error { + close = (use p: ^Process) -> io.Error { process_kill(p); return .None; } diff --git a/core/runtime/onyx_run.onyx b/core/runtime/onyx_run.onyx index 2faeea00..07a0e3ae 100644 --- a/core/runtime/onyx_run.onyx +++ b/core/runtime/onyx_run.onyx @@ -17,7 +17,7 @@ use package wasi #export "_thread_exit" _thread_exit } -#load "core/io/process" +#load "core/os/process" #local ProcessResult :: enum { Success :: 0x00; @@ -26,9 +26,9 @@ use package wasi InternalErr :: 0x03; } -__process_spawn :: (path: str, args: [] str, non_blocking_io: bool) -> io.Process.Handle #foreign "env" "process_spawn" --- -__process_read :: (handle: io.Process.Handle, buffer: [] u8) -> i32 #foreign "env" "process_read" --- -__process_write :: (handle: io.Process.Handle, buffer: [] u8) -> i32 #foreign "env" "process_write" --- -__process_kill :: (handle: io.Process.Handle) -> bool #foreign "env" "process_kill" --- -__process_wait :: (handle: io.Process.Handle) -> ProcessResult #foreign "env" "process_wait" --- -__process_destroy :: (handle: io.Process.Handle) -> void #foreign "env" "process_destroy" --- \ No newline at end of file +__process_spawn :: (path: str, args: [] str, non_blocking_io: bool) -> os.Process.Handle #foreign "env" "process_spawn" --- +__process_read :: (handle: os.Process.Handle, buffer: [] u8) -> i32 #foreign "env" "process_read" --- +__process_write :: (handle: os.Process.Handle, buffer: [] u8) -> i32 #foreign "env" "process_write" --- +__process_kill :: (handle: os.Process.Handle) -> bool #foreign "env" "process_kill" --- +__process_wait :: (handle: os.Process.Handle) -> ProcessResult #foreign "env" "process_wait" --- +__process_destroy :: (handle: os.Process.Handle) -> void #foreign "env" "process_destroy" --- \ No newline at end of file diff --git a/scripts/run_tests.onyx b/scripts/run_tests.onyx index c029768b..0c2b53a1 100644 --- a/scripts/run_tests.onyx +++ b/scripts/run_tests.onyx @@ -123,14 +123,14 @@ test_cases :: (cases) => { for #no_close *cases { printf("[{}] Running test {}...\n", context.thread_id, it.source_file); - proc := io.process_spawn(onyx_cmd, .["run", it.source_file]); - defer io.process_destroy(^proc); + proc := os.process_spawn(onyx_cmd, .["run", it.source_file]); + defer os.process_destroy(^proc); proc_reader := io.reader_make(^proc); output := io.read_all(^proc_reader); defer memory.free_slice(^output); - if exit := io.process_wait(^proc); exit != .Success { + if exit := os.process_wait(^proc); exit != .Success { // Error running the test case print_color(.Red, "[{}] Error '{}' in test case {}.\n{}", context.thread_id, exit, it.source_file, output); at_least_one_test_failed = true; -- 2.25.1