summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJens Axboe <axboe@kernel.dk>2019-01-10 15:11:07 -0700
committerJens Axboe <axboe@kernel.dk>2019-01-10 15:11:07 -0700
commita992ffa48292f1175ea2621de58fb4cde3bb62dd (patch)
tree36db000c24bba813380e8df4dedf66f86713f88d
parentfa863f6b4ad73c6bea2cabbd50803af78895e1d5 (diff)
io_queue_init: pass in flags, not io_uring_params
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>
-rw-r--r--src/io_uring.c11
-rw-r--r--src/liburing.h4
-rw-r--r--test/io_uring-cp.c5
-rw-r--r--test/io_uring-test.c5
4 files changed, 11 insertions, 14 deletions
diff --git a/src/io_uring.c b/src/io_uring.c
index bf79b9f..a75d135 100644
--- a/src/io_uring.c
+++ b/src/io_uring.c
@@ -188,17 +188,20 @@ err:
* Returns -1 on error, or zero on success. On success, 'ring'
* contains the necessary information to read/write to the rings.
*/
-int io_uring_queue_init(unsigned entries, struct io_uring_params *p,
- struct io_uring *ring)
+int io_uring_queue_init(unsigned entries, struct io_uring *ring, unsigned flags)
{
+ struct io_uring_params p;
int fd, ret;
- fd = io_uring_setup(entries, p);
+ memset(&p, 0, sizeof(p));
+ p.flags = flags;
+
+ fd = io_uring_setup(entries, &p);
if (fd < 0)
return fd;
memset(ring, 0, sizeof(*ring));
- ret = io_uring_mmap(fd, p, &ring->sq, &ring->cq);
+ ret = io_uring_mmap(fd, &p, &ring->sq, &ring->cq);
if (!ret)
ring->ring_fd = fd;
return ret;
diff --git a/src/liburing.h b/src/liburing.h
index 4123ba1..fb07583 100644
--- a/src/liburing.h
+++ b/src/liburing.h
@@ -51,8 +51,8 @@ extern int io_uring_register(int fd, unsigned int opcode, void *arg);
/*
* Library interface
*/
-extern int io_uring_queue_init(unsigned entries, struct io_uring_params *p,
- struct io_uring *ring);
+extern int io_uring_queue_init(unsigned entries, struct io_uring *ring,
+ unsigned flags);
extern void io_uring_queue_exit(struct io_uring *ring);
extern int io_uring_get_completion(struct io_uring *ring,
struct io_uring_cqe **cqe_ptr);
diff --git a/test/io_uring-cp.c b/test/io_uring-cp.c
index 3850743..a588cc2 100644
--- a/test/io_uring-cp.c
+++ b/test/io_uring-cp.c
@@ -25,12 +25,9 @@ struct io_data {
static int setup_context(unsigned entries, struct io_uring *ring)
{
- struct io_uring_params p;
int ret;
- memset(&p, 0, sizeof(p));
-
- ret = io_uring_queue_init(entries, &p, ring);
+ ret = io_uring_queue_init(entries, ring, 0);
if (ret < 0) {
fprintf(stderr, "queue_init: %s\n", strerror(-ret));
return -1;
diff --git a/test/io_uring-test.c b/test/io_uring-test.c
index a13e405..42a8745 100644
--- a/test/io_uring-test.c
+++ b/test/io_uring-test.c
@@ -15,7 +15,6 @@
int main(int argc, char *argv[])
{
- struct io_uring_params p;
struct io_uring ring;
int i, fd, ret, pending, done;
struct io_uring_sqe *sqe;
@@ -29,9 +28,7 @@ int main(int argc, char *argv[])
return 1;
}
- memset(&p, 0, sizeof(p));
-
- ret = io_uring_queue_init(QD, &p, &ring);
+ ret = io_uring_queue_init(QD, &ring, 0);
if (ret < 0) {
fprintf(stderr, "queue_init: %s\n", strerror(-ret));
return 1;