eventfd contains a 64 bit integer maintained by the kernel.
let init_val = 0; let flags = libc::EFD_CLOEXEC | libc::EFD_NONBLOCK; libc::eventfd(init_val, flags); // Register with libc::EPOLLIN | libc::EPOLLET
Write a value greater than zero to an instance of
eventfd to notify user
Reading it will then reset it to zero.
All other reads will get "Resource Temporarily Unavailable", until it's written again.