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;
|
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;
|
||||||
}
|
}
|
||||||
|
@ -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;
|
||||||
|
Reference in New Issue
Block a user