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:
Markus Mäkelä
2018-12-01 20:29:22 +02:00
parent 7ea22c3d16
commit 192562d930
2 changed files with 2 additions and 5 deletions

View File

@ -246,7 +246,7 @@ bool MessageQueue::add_to_worker(Worker* pWorker)
m_pWorker = NULL; 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; m_pWorker = pWorker;
} }

View File

@ -186,7 +186,7 @@ WorkerTimer::WorkerTimer(Worker* pWorker)
if (m_fd != -1) 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."); MXB_ALERT("Could not add timer descriptor to worker, system will not work.");
::close(m_fd); ::close(m_fd);
@ -359,9 +359,6 @@ bool Worker::add_fd(int fd, uint32_t events, MXB_POLL_DATA* pData)
{ {
bool rv = true; bool rv = true;
// Must be edge-triggered.
events |= EPOLLET;
struct epoll_event ev; struct epoll_event ev;
ev.events = events; ev.events = events;