io_uring timeout testing

This commit is contained in:
Vitaliy Filippov
2019-11-17 18:19:11 +03:00
parent eec1c35ea4
commit 2f429b17dd
3 changed files with 80 additions and 12 deletions
+6 -5
View File
@@ -17,6 +17,7 @@ ring_loop_t::ring_loop_t(int qd)
ring_loop_t::~ring_loop_t()
{
free(ring_data);
io_uring_queue_exit(&ring);
}
struct io_uring_sqe* ring_loop_t::get_sqe()
@@ -47,11 +48,7 @@ void ring_loop_t::unregister_consumer(int number)
void ring_loop_t::loop(bool sleep)
{
struct io_uring_cqe *cqe;
if (sleep)
{
io_uring_wait_cqe(&ring, &cqe);
}
while ((io_uring_peek_cqe(&ring, &cqe), cqe))
while (!io_uring_peek_cqe(&ring, &cqe))
{
struct ring_data_t *d = (struct ring_data_t*)cqe->user_data;
if (d->callback)
@@ -64,4 +61,8 @@ void ring_loop_t::loop(bool sleep)
{
consumers[i].loop();
}
if (sleep)
{
io_uring_wait_cqe(&ring, &cqe);
}
}