As linux on 64 machines is using only up to 56 bits for the user address
space (see https://www.kernel.org/doc/Documentation/x86/x86_64/mm.txt) we
can use bits from at least 56 to 63 for stuffing in the least significant 8
bits of the fd into the epoll registration. This can be used to check if
the ISelectClient's registration triggering in epoll wait is made for the
previous usage of the ISelectClient (for the wrong fd). This is not 100%
accurate, as the file descriptors could be reused but it can be in general
this is the best we can to find out expired registrations that are not
unregistered from epoll.
This module provides FdObjEpollData structure that binds fd
and the object used at the registration time, so that they both can
be registered with epoll and returned with epoll_wait to the user.
Boost Software License Version 1.0. See LICENSE_BOOST.txt for details.
Alternatively, this file may be distributed under the terms of the Tango
3-Clause BSD License (see LICENSE_BSD.txt for details).
As linux on 64 machines is using only up to 56 bits for the user address space (see https://www.kernel.org/doc/Documentation/x86/x86_64/mm.txt) we can use bits from at least 56 to 63 for stuffing in the least significant 8 bits of the fd into the epoll registration. This can be used to check if the ISelectClient's registration triggering in epoll wait is made for the previous usage of the ISelectClient (for the wrong fd). This is not 100% accurate, as the file descriptors could be reused but it can be in general this is the best we can to find out expired registrations that are not unregistered from epoll.
This module provides FdObjEpollData structure that binds fd and the object used at the registration time, so that they both can be registered with epoll and returned with epoll_wait to the user.