While dealing with d0e77743, I just noticed that we need to switch to a better use of the data field in epoll event loop(s).
struct epoll_event {
uint32_t events; /* Epoll events */
epoll_data_t data; /* User data variable */
};
union epoll_data {
void *ptr;
int fd;
uint32_t u32;
uint64_t u64;
};
Currently, we use data.fd, that is compared with a few special file descriptors, otherwise we start exec_request() that uses data.u32. Unfortunately, there's quite some likelihood that the 4th, 5th, etc... request would clash with one of the existing file descriptors. So, we need to use the full 64-bits we have there, e.g., by OR-ing one of these
While dealing with d0e77743, I just noticed that we need to switch to a better use of the data field in epoll event loop(s).
Currently, we use data.fd, that is compared with a few special file descriptors, otherwise we start exec_request() that uses data.u32. Unfortunately, there's quite some likelihood that the 4th, 5th, etc... request would clash with one of the existing file descriptors. So, we need to use the full 64-bits we have there, e.g., by OR-ing one of these
like this: