Joran Dirk Greef
a9b107045f
Use load acquire semantics when reading the SQPOLL wakeup flag
...
Ensures that the wakeup flag is read after the tail pointer has been
written. It's important to use memory load acquire semantics for the
flags read, otherwise the application and the kernel might not agree on
the consistency of the wakeup flag, leading to I/O starvation.
Refs: 6768ddcc56
Refs: https://github.com/axboe/liburing/issues/219
2020-10-03 14:34:42 +02:00
Joran Dirk Greef
95def89c23
Handle EBADFD (ring fd in bad state) in enter()
2020-10-03 14:34:01 +02:00
Joran Dirk Greef
5f99d2c240
Define SPLICE, PROVIDE_BUFFERS, REMOVE_BUFFERS and TEE opcodes and flags
2020-09-21 20:15:14 +02:00
Joran Dirk Greef
2d8df2b745
Use @intCast instead of @truncate
2020-09-21 12:03:52 +02:00
Joran Dirk Greef
7719abbf54
Add flags to queue_fsync() signature as per liburing
2020-09-21 11:09:37 +02:00
Joran Dirk Greef
57603fd26d
Use @intCast instead of @truncate on io_uring_enter() result
2020-09-21 11:09:09 +02:00
Joran Dirk Greef
575ed941d7
Cache mask instead of dereferencing mask pointer
2020-09-21 11:07:11 +02:00
Joran Dirk Greef
843c104fc9
Add io_uring syscalls to os.bits.linux.mips.SYS
...
As per lib/libc/musl/arch/mips/bits/syscall.h.in:
```c
```
2020-09-21 10:39:58 +02:00
Joran Dirk Greef
a853f00410
Add IORING_FEAT_FAST_POLL
2020-09-20 19:51:23 +02:00
Joran Dirk Greef
77903f8d4e
Test structs and offsets
2020-09-20 18:45:44 +02:00
Joran Dirk Greef
e51728a1b4
Make enter(), flush_sq(), sq_ring_needs_enter(), cq_ring_needs_flush() public
...
These will also be needed by any custom helpers
2020-09-20 15:54:31 +02:00
Joran Dirk Greef
40293a0643
Add safety checks
2020-09-20 15:41:22 +02:00
Joran Dirk Greef
f22eea82c4
Fix opcode support detection for read/write test
2020-09-20 15:33:48 +02:00
Joran Dirk Greef
b672dc7abf
Use os.fd_t instead of i32 and assert against c_int for syscall safety
2020-09-20 14:59:40 +02:00
Joran Dirk Greef
abebacda32
Handle all possible syscall errors and bring errors in line with os.zig
2020-09-20 14:21:44 +02:00
Joran Dirk Greef
4bc1b7a7ac
Fix io_uring_sqe to use the names of the first member of each union
...
Now we're really future-proof... no more `opflags` creeping in.
When anonymous unions land, we can start using `accept_flags` etc.
Until then, code using this struct won't break when the kernel adds features.
Refs: https://github.com/ziglang/zig/issues/6349
Refs: https://github.com/ziglang/zig/issues/985
2020-09-19 18:50:24 +02:00
Joran Dirk Greef
92407bfcd7
Upgrade check_errno() to an exhaustive switch (safer)
2020-09-19 18:29:50 +02:00
Joran Dirk Greef
ba18420b27
Zero the SQE slot and assign, instead of initializing with default values
2020-09-19 18:17:06 +02:00
Joran Dirk Greef
e7ae6f2fad
Remove default values from io_uring_sqe struct
2020-09-19 18:14:41 +02:00
Joran Dirk Greef
f4df2f091a
Allow the kernel to drive feature detection
2020-09-19 17:31:39 +02:00
Joran Dirk Greef
64ae9a6a87
Rename to error.SubmissionQueueFull
2020-09-19 16:54:44 +02:00
Joran Dirk Greef
c1f9d10b6a
Remove unused import aliases
2020-09-19 16:51:35 +02:00
Joran Dirk Greef
9fabae2a28
Return error.UnsupportedKernel for ENOSYS
2020-09-19 16:47:05 +02:00
Joran Dirk Greef
0d8c6a960f
Remove dangling @import from std
2020-09-19 16:45:52 +02:00
Joran Dirk Greef
cb591285d7
Use linux.IORING_SQ_CQ_OVERFLOW
2020-09-19 16:20:21 +02:00
Joran Dirk Greef
31533eb743
Move to std/os/linux
2020-09-19 16:18:04 +02:00
Joran Dirk Greef
873d1c80b3
Add splice_fd_in to io_uring_sqe and future-proof for anonymous unions
2020-09-19 16:15:17 +02:00
Joran Dirk Greef
09f2f4aeb3
Fix std @import
2020-09-19 15:14:47 +02:00
Joran Dirk Greef
b2a54b9581
Test IORING_REGISTER_FILES but avoid sparse fd sets
2020-09-19 15:07:10 +02:00
Joran Dirk Greef
5df0d284d0
Do not register /dev/zero as an fd when testing queue_readv()
2020-09-19 14:29:23 +02:00
Joran Dirk Greef
ee5931908e
@ptrCast fds.ptr to *const c_void for io_uring_register()
2020-09-19 13:25:59 +02:00
Joran Dirk Greef
8b030a6599
Use x.y for C-style x->y instead of x.*.y
2020-09-17 20:29:56 +02:00
Joran Dirk Greef
e33c466daf
Use std.builtin
2020-09-17 19:56:57 +02:00
Joran Dirk Greef
d966fe6319
Add IORING_SQ_CQ_OVERFLOW to std/os/bits/linux.zig
2020-09-17 19:53:34 +02:00
Joran Dirk Greef
21c81360ba
Remove comment
2020-09-17 19:44:53 +02:00
Joran Dirk Greef
ac1d9f716a
Use != 0 for bitwise flag conditions
2020-09-17 19:37:17 +02:00
Joran Dirk Greef
491a434b01
Check kernel support for single_mmap, accept, and read/write
2020-09-16 19:36:29 +02:00
Joran Dirk Greef
6f09796ff2
Add short license and copyright notice
2020-09-16 18:51:21 +02:00
Joran Dirk Greef
b340bbfc1d
std: add io_uring library
...
This brings io_uring helper methods to Zig for kernels >= 5.4.
We follow liburing's design decisions so that anyone who is comfortable with
liburing (https://unixism.net/loti/ref-liburing/index.html ) will feel at home.
Thanks to @daurnimator for the first draft.
Refs: https://github.com/ziglang/zig/pull/3083
Signed-off-by: Joran Dirk Greef <joran@coil.com>
2020-09-16 15:07:13 +02:00
Andrew Kelley
281fc10ec5
std.crypto siphash: fix assertion on the size of output buffer
...
the logic was backwards
2020-09-16 02:24:36 -07:00
Nathan Michaels
7801a6d17f
Fix a typo.
2020-09-15 22:49:53 -04:00
Andrew Kelley
7ccfb08a93
ci: update the on_master_success secret to lavatech
2020-09-15 15:08:35 -07:00
Samrat Man Singh
ca85e367f4
Use std.log in LibcInstallation parse instead of taking stderr
2020-09-15 18:03:55 -04:00
Andrew Kelley
b3cc36857e
Merge pull request #6340 from Vexu/fix
...
Fixes
2020-09-15 14:28:16 -04:00
LemonBoy
c1c3212500
std: Fix typo in ELF section header iterator
...
The code accidentally used the phdr offset instead of the shdr one while
iterating over the section headers.
Fixes #6338
2020-09-15 18:14:06 +03:00
Andrew Kelley
5e39ab4600
ci: disable some freebsd tests to save time
2020-09-14 21:11:34 -07:00
Andrew Kelley
a8ae324130
Merge branch 'ci-freebsd'
...
Thanks to Ave & Luna for providing this service that lets us have enough
ram to properly test FreeBSD.
2020-09-14 19:38:36 -07:00
Andrew Kelley
44ef270de1
ci: use hut.lavatech.top for updating the download page
2020-09-14 19:37:59 -07:00
Andrew Kelley
558e22b2d0
ci: update freebsd to use hut.lavatech.top instead of sr.ht
2020-09-14 18:45:30 -07:00
Andrew Kelley
01c24c4509
ci: enable std lib tests for freebsd
2020-09-14 18:22:16 -07:00