diff --git a/emper/sleep_strategy/AbstractIoSleepStrategy.cpp b/emper/sleep_strategy/AbstractIoSleepStrategy.cpp
index 05b8955ee0d1b1d51881b5877b1ffca5895f8a5e..188fb6969df4e86eb5db8c1cb0aa056ea03561ea 100644
--- a/emper/sleep_strategy/AbstractIoSleepStrategy.cpp
+++ b/emper/sleep_strategy/AbstractIoSleepStrategy.cpp
@@ -22,20 +22,6 @@
 using emper::io::IoContext;
 using emper::lib::TaggedPtr;
 
-#ifndef IORING_OP_MSG_RING
-#define IORING_OP_MSG_RING (IORING_OP_LINKAT + 1)
-#endif
-
-// TODO: Remove when liburing supports IORING_OP_MSG_RING
-static void io_uring_prep_msg_ring(struct io_uring_sqe* sqe, int ring_fd, void* user_data,
-																	 uint32_t res) {
-	io_uring_prep_nop(sqe);
-	sqe->opcode = IORING_OP_MSG_RING;
-	sqe->fd = ring_fd;
-	sqe->off = (uint64_t)user_data;
-	sqe->len = res;
-}
-
 namespace emper::sleep_strategy {
 
 thread_local bool AbstractIoSleepStrategy::readingGlobal = false;
@@ -111,7 +97,7 @@ void AbstractIoSleepStrategy::sendSpecificNotification(workerid_t workerId) {
 	TaggedPtr tag((void*)nullptr, static_cast<uint16_t>(IoContext::PointerTags::NewWorkNotification),
 								true);
 
-	io_uring_prep_msg_ring(sqe, runtime.ioContexts[workerId]->ring.ring_fd, tag, 0);
+	io_uring_prep_msg_ring(sqe, runtime.ioContexts[workerId]->ring.ring_fd, 0, uintptr_t(tag), 0);
 
 	// Do not generate a cqe on the submiting io_uring
 	sqe->flags = IOSQE_CQE_SKIP_SUCCESS;