aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJens Axboe <axboe@kernel.dk>2024-03-28 10:35:23 -0600
committerJens Axboe <axboe@kernel.dk>2024-03-28 10:35:23 -0600
commit4b45fd891947bd75b5fbbb5ebbcf63b55f2d3f6a (patch)
tree9776ceb2400e0fc88b06b52c43b6a633c82145ac
parentc28878c52377f67b1e7a16c5e6a2bba1272cf870 (diff)
downloadliburing-4b45fd891947bd75b5fbbb5ebbcf63b55f2d3f6a.tar.gz
test/msg-ring: test DEFER_TASKRUN as well
Signed-off-by: Jens Axboe <axboe@kernel.dk>
-rw-r--r--test/msg-ring-flags.c32
-rw-r--r--test/msg-ring.c33
2 files changed, 52 insertions, 13 deletions
diff --git a/test/msg-ring-flags.c b/test/msg-ring-flags.c
index a44b1bd..ebf848c 100644
--- a/test/msg-ring-flags.c
+++ b/test/msg-ring-flags.c
@@ -117,7 +117,7 @@ static void *thread_fn(void *data)
return NULL;
}
-int main(int argc, char *argv[])
+static int test(int ring_flags)
{
struct io_uring ring, ring2;
pthread_t thread;
@@ -125,16 +125,13 @@ int main(int argc, char *argv[])
void *ret2;
int ret, i;
- if (argc > 1)
- return T_EXIT_SKIP;
-
- ret = io_uring_queue_init(2, &ring, 0);
+ ret = io_uring_queue_init(2, &ring, ring_flags);
if (ret) {
fprintf(stderr, "io_uring_queue_init failed for ring1: %d\n", ret);
return T_EXIT_FAIL;
}
- ret = io_uring_queue_init(2, &ring2, 0);
+ ret = io_uring_queue_init(2, &ring2, ring_flags);
if (ret) {
fprintf(stderr, "io_uring_queue_init failed for ring2: %d\n", ret);
return T_EXIT_FAIL;
@@ -190,3 +187,26 @@ int main(int argc, char *argv[])
return T_EXIT_PASS;
}
+
+int main(int argc, char *argv[])
+{
+ int ret;
+
+ if (argc > 1)
+ return T_EXIT_SKIP;
+
+ ret = test(0);
+ if (ret == T_EXIT_FAIL) {
+ fprintf(stderr, "test ring_flags 0 failed\n");
+ return ret;
+ } else if (ret == T_EXIT_SKIP)
+ return ret;
+
+ ret = test(IORING_SETUP_SINGLE_ISSUER|IORING_SETUP_DEFER_TASKRUN);
+ if (ret == T_EXIT_FAIL) {
+ fprintf(stderr, "test ring_flags defer failed\n");
+ return ret;
+ }
+
+ return ret;
+}
diff --git a/test/msg-ring.c b/test/msg-ring.c
index cb6687f..bc8cdb5 100644
--- a/test/msg-ring.c
+++ b/test/msg-ring.c
@@ -314,25 +314,22 @@ static int test_disabled_ring(struct io_uring *ring, int flags)
return 0;
}
-int main(int argc, char *argv[])
+static int test(int ring_flags)
{
struct io_uring ring, ring2, pring;
int ret, i;
- if (argc > 1)
- return T_EXIT_SKIP;
-
- ret = io_uring_queue_init(8, &ring, 0);
+ ret = io_uring_queue_init(8, &ring, ring_flags);
if (ret) {
fprintf(stderr, "ring setup failed: %d\n", ret);
return T_EXIT_FAIL;
}
- ret = io_uring_queue_init(8, &ring2, 0);
+ ret = io_uring_queue_init(8, &ring2, ring_flags);
if (ret) {
fprintf(stderr, "ring setup failed: %d\n", ret);
return T_EXIT_FAIL;
}
- ret = io_uring_queue_init(8, &pring, IORING_SETUP_IOPOLL);
+ ret = io_uring_queue_init(8, &pring, ring_flags | IORING_SETUP_IOPOLL);
if (ret) {
fprintf(stderr, "ring setup failed: %d\n", ret);
return T_EXIT_FAIL;
@@ -418,3 +415,25 @@ int main(int argc, char *argv[])
io_uring_queue_exit(&ring2);
return T_EXIT_PASS;
}
+
+int main(int argc, char *argv[])
+{
+ int ret;
+
+ if (argc > 1)
+ return T_EXIT_SKIP;
+
+ ret = test(0);
+ if (ret != T_EXIT_PASS) {
+ fprintf(stderr, "ring flags 0 failed\n");
+ return ret;
+ }
+
+ ret = test(IORING_SETUP_SINGLE_ISSUER|IORING_SETUP_DEFER_TASKRUN);
+ if (ret != T_EXIT_PASS) {
+ fprintf(stderr, "ring flags defer failed\n");
+ return ret;
+ }
+
+ return ret;
+}