MXS-2196: Don't force epoll flags
The epoll event flags are now fully controlled by the caller of the Worker::add_fd function. This makes the mechanism more generic and allows both edge triggered and level triggered behavior.
This commit is contained in:
@ -246,7 +246,7 @@ bool MessageQueue::add_to_worker(Worker* pWorker)
|
||||
m_pWorker = NULL;
|
||||
}
|
||||
|
||||
if (pWorker->add_fd(m_read_fd, EPOLLIN, this))
|
||||
if (pWorker->add_fd(m_read_fd, EPOLLIN | EPOLLET, this))
|
||||
{
|
||||
m_pWorker = pWorker;
|
||||
}
|
||||
|
@ -186,7 +186,7 @@ WorkerTimer::WorkerTimer(Worker* pWorker)
|
||||
|
||||
if (m_fd != -1)
|
||||
{
|
||||
if (!m_pWorker->add_fd(m_fd, EPOLLIN, this))
|
||||
if (!m_pWorker->add_fd(m_fd, EPOLLIN | EPOLLET, this))
|
||||
{
|
||||
MXB_ALERT("Could not add timer descriptor to worker, system will not work.");
|
||||
::close(m_fd);
|
||||
@ -359,9 +359,6 @@ bool Worker::add_fd(int fd, uint32_t events, MXB_POLL_DATA* pData)
|
||||
{
|
||||
bool rv = true;
|
||||
|
||||
// Must be edge-triggered.
|
||||
events |= EPOLLET;
|
||||
|
||||
struct epoll_event ev;
|
||||
|
||||
ev.events = events;
|
||||
|
Reference in New Issue
Block a user