aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJens Axboe <axboe@kernel.dk>2024-02-02 15:33:26 -0700
committerJens Axboe <axboe@kernel.dk>2024-02-02 15:34:12 -0700
commit93715a1175e1b5c6084bc9e997de5cd946a9c84c (patch)
treeb3b0da5221eb19b45b1a29b33bdbeca28a1b8ecc
parentd9ef8e542056d4a1319e1c39e90fd0684402e164 (diff)
downloadliburing-93715a1175e1b5c6084bc9e997de5cd946a9c84c.tar.gz
examples/napi-busy-poll-{client,server}: fix various errors
- io_uring interfaces don't utilize errno at all, there were various use cases of that. - code style - Actually check napi register/unregister return values Signed-off-by: Jens Axboe <axboe@kernel.dk>
-rw-r--r--examples/napi-busy-poll-client.c30
-rw-r--r--examples/napi-busy-poll-server.c37
2 files changed, 47 insertions, 20 deletions
diff --git a/examples/napi-busy-poll-client.c b/examples/napi-busy-poll-client.c
index fda1da7e..c335335d 100644
--- a/examples/napi-busy-poll-client.c
+++ b/examples/napi-busy-poll-client.c
@@ -278,7 +278,7 @@ int main(int argc, char *argv[])
struct __kernel_timespec ts;
struct io_uring_params params;
struct io_uring_napi napi;
- int flag;
+ int flag, ret;
memset(&opt, 0, sizeof(struct options));
@@ -366,9 +366,10 @@ int main(int argc, char *argv[])
params.sq_thread_idle = 50;
}
- if (io_uring_queue_init_params(RINGSIZE, &ctx.ring, &params) < 0) {
+ ret = io_uring_queue_init_params(RINGSIZE, &ctx.ring, &params);
+ if (ret) {
fprintf(stderr, "io_uring_queue_init_params() failed: (%d) %s\n",
- errno, strerror(errno));
+ ret, strerror(-ret));
exit(1);
}
@@ -376,7 +377,11 @@ int main(int argc, char *argv[])
napi.prefer_busy_poll = opt.prefer_busy_poll;
napi.busy_poll_to = opt.timeout;
- io_uring_register_napi(&ctx.ring, &napi);
+ ret = io_uring_register_napi(&ctx.ring, &napi);
+ if (ret) {
+ fprintf(stderr, "io_uring_register_napi: %d\n", ret);
+ exit(1);
+ }
}
if (opt.busy_loop)
@@ -413,8 +418,13 @@ int main(int argc, char *argv[])
do {
res = io_uring_submit_and_wait_timeout(&ctx.ring, &cqe, 1, tsPtr, NULL);
- }
- while (res < 0 && errno == ETIME);
+ if (res >= 0)
+ break;
+ else if (res == -ETIME)
+ continue;
+ fprintf(stderr, "submit_and_wait: %d\n", res);
+ exit(1);
+ } while (1);
io_uring_for_each_cqe(&ctx.ring, head, cqe) {
++num_completed;
@@ -431,7 +441,9 @@ int main(int argc, char *argv[])
out:
// Clean up.
if (opt.timeout || opt.prefer_busy_poll) {
- io_uring_unregister_napi(&ctx.ring, &napi);
+ ret = io_uring_unregister_napi(&ctx.ring, &napi);
+ if (ret)
+ fprintf(stderr, "io_uring_unregister_napi: %d\n", ret);
if (opt.timeout != napi.busy_poll_to ||
opt.prefer_busy_poll != napi.prefer_busy_poll) {
fprintf(stderr, "Expected busy poll to = %d, got %d\n",
@@ -440,7 +452,9 @@ out:
opt.prefer_busy_poll, napi.prefer_busy_poll);
}
} else {
- io_uring_unregister_napi(&ctx.ring, NULL);
+ ret = io_uring_unregister_napi(&ctx.ring, NULL);
+ if (ret)
+ fprintf(stderr, "io_uring_unregister_napi: %d\n", ret);
}
io_uring_queue_exit(&ctx.ring);
diff --git a/examples/napi-busy-poll-server.c b/examples/napi-busy-poll-server.c
index d3c919f2..7e4b1d7d 100644
--- a/examples/napi-busy-poll-server.c
+++ b/examples/napi-busy-poll-server.c
@@ -168,7 +168,6 @@ static void reportNapi(struct ctx *ctx)
static void sendPing(struct ctx *ctx)
{
-
struct io_uring_sqe *sqe = io_uring_get_sqe(&ctx->ring);
io_uring_prep_sendmsg(sqe, ctx->sockfd, &ctx->msg, 0);
@@ -177,6 +176,8 @@ static void sendPing(struct ctx *ctx)
static void receivePing(struct ctx *ctx)
{
+ struct io_uring_sqe *sqe;
+
bzero(&ctx->msg, sizeof(struct msghdr));
ctx->msg.msg_name = &ctx->saddr;
ctx->msg.msg_namelen = sizeof(struct sockaddr_in6);
@@ -185,7 +186,7 @@ static void receivePing(struct ctx *ctx)
ctx->msg.msg_iov = &ctx->iov;
ctx->msg.msg_iovlen = 1;
- struct io_uring_sqe *sqe = io_uring_get_sqe(&ctx->ring);
+ sqe = io_uring_get_sqe(&ctx->ring);
io_uring_prep_recvmsg(sqe, ctx->sockfd, &ctx->msg, 0);
sqe->user_data = encodeUserData(IOURING_RECVMSG, ctx->sockfd);
}
@@ -231,6 +232,7 @@ int main(int argc, char *argv[])
struct __kernel_timespec ts;
struct io_uring_params params;
struct io_uring_napi napi;
+ int ret;
memset(&opt, 0, sizeof(struct options));
@@ -321,9 +323,10 @@ int main(int argc, char *argv[])
params.sq_thread_idle = 50;
}
- if (io_uring_queue_init_params(RINGSIZE, &ctx.ring, &params) < 0) {
+ ret = io_uring_queue_init_params(RINGSIZE, &ctx.ring, &params);
+ if (ret) {
fprintf(stderr, "io_uring_queue_init_params() failed: (%d) %s\n",
- errno, strerror(errno));
+ ret, strerror(-ret));
exit(1);
}
@@ -331,7 +334,11 @@ int main(int argc, char *argv[])
napi.prefer_busy_poll = opt.prefer_busy_poll;
napi.busy_poll_to = opt.timeout;
- io_uring_register_napi(&ctx.ring, &napi);
+ ret = io_uring_register_napi(&ctx.ring, &napi);
+ if (ret) {
+ fprintf(stderr, "io_uring_register_napi: %d\n", ret);
+ exit(1);
+ }
}
if (opt.busy_loop)
@@ -362,25 +369,31 @@ int main(int argc, char *argv[])
do {
res = io_uring_submit_and_wait_timeout(&ctx.ring, &cqe, 1, tsPtr, NULL);
- }
- while (res < 0 && errno == ETIME);
+ if (res >= 0)
+ break;
+ else if (res == -ETIME)
+ continue;
+ fprintf(stderr, "submit_and_wait: %d\n", res);
+ exit(1);
+ } while (1);
io_uring_for_each_cqe(&ctx.ring, head, cqe) {
++num_completed;
completion(&ctx, cqe);
}
- if (num_completed) {
+ if (num_completed)
io_uring_cq_advance(&ctx.ring, num_completed);
- }
}
// Clean up.
- if (opt.timeout || opt.prefer_busy_poll)
- io_uring_unregister_napi(&ctx.ring, &napi);
+ if (opt.timeout || opt.prefer_busy_poll) {
+ ret = io_uring_unregister_napi(&ctx.ring, &napi);
+ if (ret)
+ fprintf(stderr, "io_uring_unregister_napi: %d\n", ret);
+ }
io_uring_queue_exit(&ctx.ring);
close(ctx.sockfd);
-
return 0;
}