diff --git a/CMakeLists.txt b/CMakeLists.txt index bfa78ce278..a6f3d73ff7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -126,6 +126,7 @@ set(ZIG_STD_SRC "${CMAKE_SOURCE_DIR}/std/test_runner_libc.zig" "${CMAKE_SOURCE_DIR}/std/test_runner_nolibc.zig" "${CMAKE_SOURCE_DIR}/std/std.zig" + "${CMAKE_SOURCE_DIR}/std/os.zig" "${CMAKE_SOURCE_DIR}/std/syscall.zig" "${CMAKE_SOURCE_DIR}/std/errno.zig" "${CMAKE_SOURCE_DIR}/std/rand.zig" diff --git a/example/guess_number/main.zig b/example/guess_number/main.zig index 8ad8216941..4e8666830a 100644 --- a/example/guess_number/main.zig +++ b/example/guess_number/main.zig @@ -2,6 +2,7 @@ export executable "guess_number"; import "std.zig"; import "rand.zig"; +import "os.zig"; pub fn main(args: [][]u8) -> %void { %%stderr.print_str("Welcome to the Guess Number Game in Zig.\n"); diff --git a/std/os.zig b/std/os.zig new file mode 100644 index 0000000000..b82ab0c048 --- /dev/null +++ b/std/os.zig @@ -0,0 +1,17 @@ +import "syscall.zig"; +import "errno.zig"; + +pub error SigInterrupt; +pub error Unexpected; + +pub fn os_get_random_bytes(buf: []u8) -> %void { + const amt_got = getrandom(buf.ptr, buf.len, 0); + if (amt_got < 0) { + return switch (-amt_got) { + EINVAL => unreachable{}, + EFAULT => unreachable{}, + EINTR => error.SigInterrupt, + else => error.Unexpected, + } + } +} diff --git a/std/std.zig b/std/std.zig index d628692ae0..70753c0c82 100644 --- a/std/std.zig +++ b/std/std.zig @@ -160,18 +160,6 @@ pub struct InStream { } } -pub fn os_get_random_bytes(buf: []u8) -> %void { - const amt_got = getrandom(buf.ptr, buf.len, 0); - if (amt_got < 0) { - return switch (-amt_got) { - EINVAL => unreachable{}, - EFAULT => unreachable{}, - EINTR => error.SigInterrupt, - else => error.Unexpected, - } - } -} - #attribute("cold") pub fn abort() -> unreachable { raise(SIGABRT);