| author | |
| committer | |
| log | 7b8c96612f1326525c655abe7f7bb0472cbddee1 |
| tree | fa4a91d4e9ccef5e1a7ed7c29cb2425a4aa56b4d |
| parent | 8aa87ec441c13ce590dc5a9f48aab638326c8b67 |
2 files changed, 14 insertions(+), 0 deletions(-)
std/c/freebsd.zig+1| ... | ... | @@ -6,3 +6,4 @@ pub const _errno = __error; |
| 6 | 6 | |
| 7 | 7 | pub extern "c" fn getdents(fd: c_int, buf_ptr: [*]u8, nbytes: usize) usize; |
| 8 | 8 | pub extern "c" fn sigaltstack(ss: ?*stack_t, old_ss: ?*stack_t) c_int; |
| 9 | pub extern "c" fn getrandom(buf_ptr: [*]u8, buf_len: usize, flags: c_uint) c_int; |
std/os.zig+13| ... | ... | @@ -120,6 +120,19 @@ pub fn getrandom(buf: []u8) GetRandomError!void { |
| 120 | 120 | } |
| 121 | 121 | } |
| 122 | 122 | } |
| 123 | if (freebsd.is_the_target) { | |
| 124 | while (true) { | |
| 125 | const err = std.c.getErrno(std.c.getrandom(buf.ptr, buf.len, 0)); | |
| 126 | ||
| 127 | switch (err) { | |
| 128 | 0 => return, | |
| 129 | EINVAL => unreachable, | |
| 130 | EFAULT => unreachable, | |
| 131 | EINTR => continue, | |
| 132 | else => return unexpectedErrno(err), | |
| 133 | } | |
| 134 | } | |
| 135 | } | |
| 123 | 136 | if (wasi.is_the_target) { |
| 124 | 137 | switch (wasi.random_get(buf.ptr, buf.len)) { |
| 125 | 138 | 0 => return, |