From mboxrd@z Thu Jan 1 00:00:00 1970 From: Huawei Xie Subject: [PATCH] lib/librte_vhost: combine select with sleep Date: Fri, 6 Mar 2015 13:52:27 +0800 Message-ID: <1425621147-14904-1-git-send-email-huawei.xie@intel.com> To: dev-VfR2kkLFssw@public.gmane.org Return-path: List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces-VfR2kkLFssw@public.gmane.org Sender: "dev" combine sleep into select when there is no file descriptors to be monitored. Signed-off-by: Huawei Xie --- lib/librte_vhost/vhost_user/fd_man.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/lib/librte_vhost/vhost_user/fd_man.c b/lib/librte_vhost/vhost_user/fd_man.c index 63ac4df..a89b6fe 100644 --- a/lib/librte_vhost/vhost_user/fd_man.c +++ b/lib/librte_vhost/vhost_user/fd_man.c @@ -211,25 +211,26 @@ fdset_event_dispatch(struct fdset *pfdset) void *dat; int fd; int remove1, remove2; + int ret; if (pfdset == NULL) return; while (1) { + struct timeval tv; + tv.tv_sec = 1; + tv.tv_usec = 0; FD_ZERO(&rfds); FD_ZERO(&wfds); pthread_mutex_lock(&pfdset->fd_mutex); maxfds = fdset_fill(&rfds, &wfds, pfdset); - if (maxfds == -1) { - pthread_mutex_unlock(&pfdset->fd_mutex); - sleep(1); - continue; - } pthread_mutex_unlock(&pfdset->fd_mutex); - select(maxfds + 1, &rfds, &wfds, NULL, NULL); + ret = select(maxfds + 1, &rfds, &wfds, NULL, &tv); + if (ret <= 0) + continue; for (i = 0; i < num; i++) { remove1 = remove2 = 0; -- 1.8.1.4