Clear SQEs before returning them to the caller to prevent erroneous double submissions

Vitaliy Filippov 2 years ago
parent 036c6d4c42
commit e66ed47515
  1. 3
      ringloop.cpp
  2. 3
      ringloop.h

@ -77,7 +77,10 @@ void ring_loop_t::loop()
dl.callback(&dl);
}
else
{
printf("Warning: empty callback in SQE\n");
free_ring_data[free_ring_data_ptr++] = d - ring_datas;
}
io_uring_cqe_seen(&ring, cqe);
}
while (get_sqe_queue.size() > 0)

@ -142,7 +142,10 @@ public:
return NULL;
struct io_uring_sqe* sqe = io_uring_get_sqe(&ring);
if (sqe)
{
*sqe = { 0 };
io_uring_sqe_set_data(sqe, ring_datas + free_ring_data[--free_ring_data_ptr]);
}
return sqe;
}
inline int wait_sqe(std::function<void()> cb)

Loading…
Cancel
Save