vcl: fix libc epoll pwait starved
We call vls_epoll_wait with 0 timeout to process unhandled_evts_vector in ldp_epoll_pwait_eventfd. But vls_epoll_wait will then call vppcom_epoll_wait_eventfd to process events in event queue. If there are continuous events to be handled, then libc_epoll_pwait have no chance to be called. Type: fix Signed-off-by: wanghanlin <wanghanlin@corp.netease.com> Change-Id: Ia4f61d0d438a3475bfde9f6715805274671d4e75
This commit is contained in:
@ -2516,7 +2516,8 @@ ldp_epoll_pwait_eventfd (int epfd, struct epoll_event *events,
|
||||
ldpw->mq_epfd_added = 1;
|
||||
}
|
||||
|
||||
rv = vls_epoll_wait (ep_vlsh, events, maxevents, 0);
|
||||
/* Request to only drain unhandled to prevent libc_epoll_wait starved */
|
||||
rv = vls_epoll_wait (ep_vlsh, events, maxevents, -2);
|
||||
if (rv > 0)
|
||||
goto done;
|
||||
else if (PREDICT_FALSE (rv < 0))
|
||||
|
Reference in New Issue
Block a user