From c130c60b2bb985bd15137ca471d15f690ef12dd7 Mon Sep 17 00:00:00 2001 From: Vladislav Vaintroub Date: Wed, 25 Nov 2020 11:12:09 +0100 Subject: [PATCH] Cleanup. Provide accurate comment on my_getevents(). --- tpool/aio_linux.cc | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/tpool/aio_linux.cc b/tpool/aio_linux.cc index 03872df5ac7..c335c54964d 100644 --- a/tpool/aio_linux.cc +++ b/tpool/aio_linux.cc @@ -22,8 +22,14 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111 - 1301 USA*/ # include # include -/** A simpler alternative to io_getevents(), without -aio_ring_is_empty() that may trigger SIGSEGV */ +/* + A hack, which so far seems to allow allow getevents thread to be interrupted + by io_destroy() from another thread + + libaio's io_getevent() would sometimes crash when attempting this feat, + thus the raw syscall. + +*/ static int my_getevents(io_context_t ctx, long min_nr, long nr, io_event *ev) { int saved_errno= errno; @@ -37,6 +43,8 @@ static int my_getevents(io_context_t ctx, long min_nr, long nr, io_event *ev) return ret; } #endif + + /* Linux AIO implementation, based on native AIO. Needs libaio.h and -laio at the compile time.