From 6039e4d2e98f3ac4342e07b4c0f093a65625885b Mon Sep 17 00:00:00 2001 From: Ian Gulliver Date: Sat, 18 May 2019 23:22:38 -0700 Subject: [PATCH] Add nop() --- test_loop | Bin 144408 -> 148608 bytes uring.cc | 7 +++++++ uring.h | 2 ++ 3 files changed, 9 insertions(+) diff --git a/test_loop b/test_loop index 155c2aa26112bf9dc323ee026fca17bfb39eb9fa..1d80a3f97ba9fae58f1a79101ba753648d2ffa20 100755 GIT binary patch delta 35510 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 &callback) { + auto *entry = GetEntry(callback); + auto *sqe = GetSQE(); + io_uring_prep_nop(sqe); + io_uring_sqe_set_data(sqe, reinterpret_cast(entry)); +} + void URing::write(int fd, const void *buf, size_t count, const std::function &callback) { std::vector vecs{ diff --git a/uring.h b/uring.h index ab12ad9..66a3bea 100644 --- a/uring.h +++ b/uring.h @@ -13,6 +13,8 @@ class URing { URing(uint32_t num_entries); ~URing(); + void nop(const std::function &callback); + // TODO: write/writev don't work for files because they always use offset 0 void write(int fd, const void *buf, size_t count, const std::function &callback);