All of lore.kernel.org
 help / color / mirror / Atom feed
* [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.