]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/seastar/include/seastar/core/linux-aio.hh
update ceph source to reef 18.1.2
[ceph.git] / ceph / src / seastar / include / seastar / core / linux-aio.hh
index 1e4eef211b9cda0a5679be7c6f748c0bd6d267b7..88d90ef9a97657f68ee6654482af492a82004eec 100644 (file)
@@ -97,7 +97,6 @@ linux_abi::iocb make_writev_iocb(int fd, uint64_t offset, const ::iovec* iov, si
 linux_abi::iocb make_poll_iocb(int fd, uint32_t events);
 
 void set_user_data(linux_abi::iocb& iocb, void* data);
-void* get_user_data(const linux_abi::iocb& iocb);
 void set_nowait(linux_abi::iocb& iocb, bool nowait);
 
 void set_eventfd_notification(linux_abi::iocb& iocb, int eventfd);
@@ -105,7 +104,7 @@ void set_eventfd_notification(linux_abi::iocb& iocb, int eventfd);
 linux_abi::iocb* get_iocb(const linux_abi::io_event& ioev);
 
 int io_setup(int nr_events, linux_abi::aio_context_t* io_context);
-int io_destroy(linux_abi::aio_context_t io_context);
+int io_destroy(linux_abi::aio_context_t io_context) noexcept;
 int io_submit(linux_abi::aio_context_t io_context, long nr, linux_abi::iocb** iocbs);
 int io_cancel(linux_abi::aio_context_t io_context, linux_abi::iocb* iocb, linux_abi::io_event* result);
 int io_getevents(linux_abi::aio_context_t io_context, long min_nr, long nr, linux_abi::io_event* events, const ::timespec* timeout,
@@ -194,10 +193,14 @@ set_user_data(linux_abi::iocb& iocb, void* data) {
     iocb.aio_data = reinterpret_cast<uintptr_t>(data);
 }
 
-inline
-void*
-get_user_data(const linux_abi::iocb& iocb) {
-    return reinterpret_cast<void*>(uintptr_t(iocb.aio_data));
+template <typename T>
+inline T* get_user_data(const linux_abi::iocb& iocb) noexcept {
+    return reinterpret_cast<T*>(uintptr_t(iocb.aio_data));
+}
+
+template <typename T>
+inline T* get_user_data(const linux_abi::io_event& ev) noexcept {
+    return reinterpret_cast<T*>(uintptr_t(ev.data));
 }
 
 inline