Applications should not need to care about this, we can pass it in
ourselves. Once the libc support is there, we won't expose this
parameter either.
Signed-off-by: Jens Axboe <axboe@kernel.dk>
We would randomly fail depending on what garbage was passed in
the two sigset related fields.
Reported-by: Jeff Moyer <jmoyer@redhat.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Initial man page for io_uring_setup. Content was taken from the kernel
commit logs and from an LWN article written by Jon Corbet.
Signed-off-by: Jeff Moyer <jmoyer@redhat.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
The man page suggests that IOSQE_FIXED_FILE must be specified for all
sqes when the io_uring instance has files registered. This is not
the case, so clear that up.
Also fix a typo (few->new) while we're in there.
Signed-off-by: Jeff Moyer <jmoyer@redhat.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
This also includes a couple of whitespace cleanups. Most man pages
don't leave spaces between directives.
Signed-off-by: Jeff Moyer <jmoyer@redhat.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Just setup one ring in the child process, and poll for when the
read side of the pipe is readable. From the parent, write something
to the pipe.
If nothing happens within 1 second, fail the test.
Signed-off-by: Jens Axboe <axboe@kernel.dk>
- Add a timeout, if we don't finish in one second we are definitely
hung because the poll remove command didn't work.
- Don't assume completion ordering
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Let's have the various helpers be in usefully named functions, no
need to bundle them all into the same one.
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Initial content was taken from the kernel commits (Jens Axboe).
Signed-off-by: Jeff Moyer <jmoyer@redhat.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
We don't need any of the information in there in the caller, and
this makes it harder to abuse as we don't require the caller to
have memset() the struct first.
Signed-off-by: Jens Axboe <axboe@kernel.dk>
- Don't use polled IO for the io_uring-test, that'll fail if the
fs/device doesn't suppor it
- copy read-in was broken for io_uring-cp
Signed-off-by: Jens Axboe <axboe@kernel.dk>
- Fixed buffers are now available through io_uring_register()
- Various thread/wq options are now dead and automatic instead
- sqe->index is now sqe->buf_index
- Fixed buffers require flag, not separate opcode
Signed-off-by: Jens Axboe <axboe@kernel.dk>
- io_uring_sqe added a data field that's passed back at completion
- io_uring_sqe added an index field, for fixed buffer locations
- io_uring_setup(2) system call added a 'nr_iovecs' field
Signed-off-by: Jens Axboe <axboe@kernel.dk>
This is cleaner than having the app juggle an SQ and CQ ring,
just wrap them in struct io_uring and have the API always take
that. This means the app doesn't need to worry about the different
types of rings, and that we only need to pass in one argument
for setup/teardown.
Signed-off-by: Jens Axboe <axboe@kernel.dk>
This now exposes two helpers:
io_uring_get_completion()
Return a completion, if we have one (or more) available in
the ring
io_uring_wait_completion()
Return a completion, waiting for it if necessary
Signed-off-by: Jens Axboe <axboe@kernel.dk>