Use right return codes and extract the testing into a function Signed-off-by: Pavel Begunkov <asml.silence@xxxxxxxxx> --- test/poll-many.c | 46 +++++++++++++++++++++++++++------------------- 1 file changed, 27 insertions(+), 19 deletions(-) diff --git a/test/poll-many.c b/test/poll-many.c index dfbeeab..ebf22e8 100644 --- a/test/poll-many.c +++ b/test/poll-many.c @@ -14,6 +14,7 @@ #include <fcntl.h> #include "liburing.h" +#include "helpers.h" #define NFILES 5000 #define BATCH 500 @@ -137,6 +138,21 @@ static int arm_polls(struct io_uring *ring) return 0; } +static int do_test(struct io_uring *ring) +{ + int i; + + if (arm_polls(ring)) + return 1; + + for (i = 0; i < NLOOPS; i++) { + trigger_polls(); + if (reap_polls(ring)) + return 1; + } + return 0; +} + int main(int argc, char *argv[]) { struct io_uring ring; @@ -149,7 +165,7 @@ int main(int argc, char *argv[]) if (getrlimit(RLIMIT_NOFILE, &rlim) < 0) { perror("getrlimit"); - goto err_noring; + return T_EXIT_FAIL; } if (rlim.rlim_cur < (2 * NFILES + 5)) { @@ -159,14 +175,14 @@ int main(int argc, char *argv[]) if (errno == EPERM) goto err_nofail; perror("setrlimit"); - goto err_noring; + return T_EXIT_FAIL; } } for (i = 0; i < NFILES; i++) { if (pipe(p[i].fd) < 0) { perror("pipe"); - goto err_noring; + return T_EXIT_FAIL; } } @@ -176,31 +192,23 @@ int main(int argc, char *argv[]) if (ret) { if (ret == -EINVAL) { fprintf(stdout, "No CQSIZE, trying without\n"); - ret = io_uring_queue_init(RING_SIZE, &ring, 0); + + params.flags &= ~IORING_SETUP_CQSIZE; + params.cq_entries = 0; + ret = io_uring_queue_init_params(RING_SIZE, &ring, ¶ms); if (ret) { fprintf(stderr, "ring setup failed: %d\n", ret); - return 1; + return T_EXIT_FAIL; } } } - if (arm_polls(&ring)) - goto err; - - for (i = 0; i < NLOOPS; i++) { - trigger_polls(); - ret = reap_polls(&ring); - if (ret) - goto err; + if (do_test(&ring)) { + fprintf(stderr, "test (normal) failed\n"); + return T_EXIT_FAIL; } - io_uring_queue_exit(&ring); return 0; -err: - io_uring_queue_exit(&ring); -err_noring: - fprintf(stderr, "poll-many failed\n"); - return 1; err_nofail: fprintf(stderr, "poll-many: not enough files available (and not root), " "skipped\n"); -- 2.38.1