* [PATCH liburing 0/2] liburing.h helpers cleanup
@ 2021-08-25 12:23 Pavel Begunkov
2021-08-25 12:23 ` [PATCH liburing 1/2] liburing.h: add a multipoll helper Pavel Begunkov
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: Pavel Begunkov @ 2021-08-25 12:23 UTC (permalink / raw)
To: Jens Axboe, io-uring
Add a helper for preparing multishot poll requests + a poll mask
conversion cleanup.
Pavel Begunkov (2):
liburing.h: add a multipoll helper
liburing.h: dedup poll mask conversion
src/include/liburing.h | 25 +++++++++++++++++--------
test/poll-mshot-update.c | 3 +--
2 files changed, 18 insertions(+), 10 deletions(-)
--
2.32.0
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH liburing 1/2] liburing.h: add a multipoll helper
2021-08-25 12:23 [PATCH liburing 0/2] liburing.h helpers cleanup Pavel Begunkov
@ 2021-08-25 12:23 ` Pavel Begunkov
2021-08-25 12:23 ` [PATCH liburing 2/2] liburing.h: dedup poll mask conversion Pavel Begunkov
2021-08-25 14:59 ` [PATCH liburing 0/2] liburing.h helpers cleanup Jens Axboe
2 siblings, 0 replies; 4+ messages in thread
From: Pavel Begunkov @ 2021-08-25 12:23 UTC (permalink / raw)
To: Jens Axboe, io-uring
Add a helper for preparing a multipoll request and use it in a test.
Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
---
src/include/liburing.h | 7 +++++++
test/poll-mshot-update.c | 3 +--
2 files changed, 8 insertions(+), 2 deletions(-)
diff --git a/src/include/liburing.h b/src/include/liburing.h
index f073e25..d20dd25 100644
--- a/src/include/liburing.h
+++ b/src/include/liburing.h
@@ -323,6 +323,13 @@ static inline void io_uring_prep_poll_add(struct io_uring_sqe *sqe, int fd,
sqe->poll32_events = poll_mask;
}
+static inline void io_uring_prep_poll_multishot(struct io_uring_sqe *sqe,
+ int fd, unsigned poll_mask)
+{
+ io_uring_prep_poll_add(sqe, fd, poll_mask);
+ sqe->len = IORING_POLL_ADD_MULTI;
+}
+
static inline void io_uring_prep_poll_remove(struct io_uring_sqe *sqe,
void *user_data)
{
diff --git a/test/poll-mshot-update.c b/test/poll-mshot-update.c
index 6bf4679..75ee52f 100644
--- a/test/poll-mshot-update.c
+++ b/test/poll-mshot-update.c
@@ -70,8 +70,7 @@ static int arm_poll(struct io_uring *ring, int off)
return 1;
}
- io_uring_prep_poll_add(sqe, p[off].fd[0], POLLIN);
- sqe->len = IORING_POLL_ADD_MULTI;
+ io_uring_prep_poll_multishot(sqe, p[off].fd[0], POLLIN);
sqe->user_data = off;
return 0;
}
--
2.32.0
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH liburing 2/2] liburing.h: dedup poll mask conversion
2021-08-25 12:23 [PATCH liburing 0/2] liburing.h helpers cleanup Pavel Begunkov
2021-08-25 12:23 ` [PATCH liburing 1/2] liburing.h: add a multipoll helper Pavel Begunkov
@ 2021-08-25 12:23 ` Pavel Begunkov
2021-08-25 14:59 ` [PATCH liburing 0/2] liburing.h helpers cleanup Jens Axboe
2 siblings, 0 replies; 4+ messages in thread
From: Pavel Begunkov @ 2021-08-25 12:23 UTC (permalink / raw)
To: Jens Axboe, io-uring
Poll mask LE/BE translation is ugly enough to want to hide it in a
helper and not hand code many times.
Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
---
src/include/liburing.h | 18 ++++++++++--------
1 file changed, 10 insertions(+), 8 deletions(-)
diff --git a/src/include/liburing.h b/src/include/liburing.h
index d20dd25..0ec07ee 100644
--- a/src/include/liburing.h
+++ b/src/include/liburing.h
@@ -313,14 +313,19 @@ static inline void io_uring_prep_sendmsg(struct io_uring_sqe *sqe, int fd,
sqe->msg_flags = flags;
}
-static inline void io_uring_prep_poll_add(struct io_uring_sqe *sqe, int fd,
- unsigned poll_mask)
+static inline unsigned __io_uring_prep_poll_mask(unsigned poll_mask)
{
- io_uring_prep_rw(IORING_OP_POLL_ADD, sqe, fd, NULL, 0, 0);
#if __BYTE_ORDER == __BIG_ENDIAN
poll_mask = __swahw32(poll_mask);
#endif
- sqe->poll32_events = poll_mask;
+ return poll_mask;
+}
+
+static inline void io_uring_prep_poll_add(struct io_uring_sqe *sqe, int fd,
+ unsigned poll_mask)
+{
+ io_uring_prep_rw(IORING_OP_POLL_ADD, sqe, fd, NULL, 0, 0);
+ sqe->poll32_events = __io_uring_prep_poll_mask(poll_mask);
}
static inline void io_uring_prep_poll_multishot(struct io_uring_sqe *sqe,
@@ -343,10 +348,7 @@ static inline void io_uring_prep_poll_update(struct io_uring_sqe *sqe,
{
io_uring_prep_rw(IORING_OP_POLL_REMOVE, sqe, -1, old_user_data, flags,
(__u64)(uintptr_t)new_user_data);
-#if __BYTE_ORDER == __BIG_ENDIAN
- poll_mask = __swahw32(poll_mask);
-#endif
- sqe->poll32_events = poll_mask;
+ sqe->poll32_events = __io_uring_prep_poll_mask(poll_mask);
}
static inline void io_uring_prep_fsync(struct io_uring_sqe *sqe, int fd,
--
2.32.0
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH liburing 0/2] liburing.h helpers cleanup
2021-08-25 12:23 [PATCH liburing 0/2] liburing.h helpers cleanup Pavel Begunkov
2021-08-25 12:23 ` [PATCH liburing 1/2] liburing.h: add a multipoll helper Pavel Begunkov
2021-08-25 12:23 ` [PATCH liburing 2/2] liburing.h: dedup poll mask conversion Pavel Begunkov
@ 2021-08-25 14:59 ` Jens Axboe
2 siblings, 0 replies; 4+ messages in thread
From: Jens Axboe @ 2021-08-25 14:59 UTC (permalink / raw)
To: Pavel Begunkov, io-uring
On 8/25/21 6:23 AM, Pavel Begunkov wrote:
> Add a helper for preparing multishot poll requests + a poll mask
> conversion cleanup.
>
> Pavel Begunkov (2):
> liburing.h: add a multipoll helper
> liburing.h: dedup poll mask conversion
>
> src/include/liburing.h | 25 +++++++++++++++++--------
> test/poll-mshot-update.c | 3 +--
> 2 files changed, 18 insertions(+), 10 deletions(-)
Applied, thanks.
--
Jens Axboe
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2021-08-25 14:59 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-08-25 12:23 [PATCH liburing 0/2] liburing.h helpers cleanup Pavel Begunkov
2021-08-25 12:23 ` [PATCH liburing 1/2] liburing.h: add a multipoll helper Pavel Begunkov
2021-08-25 12:23 ` [PATCH liburing 2/2] liburing.h: dedup poll mask conversion Pavel Begunkov
2021-08-25 14:59 ` [PATCH liburing 0/2] liburing.h helpers cleanup Jens Axboe
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.