提交 29ed758a 编写于 作者: D Daniel P. Berrange

Fix dispatch of FD events when one or more handles are marked deleted

上级 24a149cf
Mon Mar 16 10:35:00 GMT 2009 Daniel P. Berrange <berrange@redhat.com>
* qemud/event.c: Fix dispatch of FD events when one or more
handles has been marked as deleted
Mon Mar 16 10:30:00 GMT 2009 Daniel P. Berrange <berrange@redhat.com> Mon Mar 16 10:30:00 GMT 2009 Daniel P. Berrange <berrange@redhat.com>
* qemud/remote.c: Don't allocate cpumaps arg if maplength is * qemud/remote.c: Don't allocate cpumaps arg if maplength is
......
...@@ -409,25 +409,26 @@ static int virEventDispatchTimeouts(void) { ...@@ -409,25 +409,26 @@ static int virEventDispatchTimeouts(void) {
* Returns 0 upon success, -1 if an error occurred * Returns 0 upon success, -1 if an error occurred
*/ */
static int virEventDispatchHandles(int nfds, struct pollfd *fds) { static int virEventDispatchHandles(int nfds, struct pollfd *fds) {
int i; int i, n;
for (i = 0 ; i < nfds ; i++) { for (i = 0, n = 0 ; i < eventLoop.handlesCount && n < nfds ; i++) {
if (eventLoop.handles[i].deleted) { if (eventLoop.handles[i].deleted) {
EVENT_DEBUG("Skip deleted %d", eventLoop.handles[i].fd); EVENT_DEBUG("Skip deleted %d", eventLoop.handles[i].fd);
continue; continue;
} }
if (fds[i].revents) { if (fds[n].revents) {
virEventHandleCallback cb = eventLoop.handles[i].cb; virEventHandleCallback cb = eventLoop.handles[i].cb;
void *opaque = eventLoop.handles[i].opaque; void *opaque = eventLoop.handles[i].opaque;
int hEvents = virPollEventToEventHandleType(fds[i].revents); int hEvents = virPollEventToEventHandleType(fds[n].revents);
EVENT_DEBUG("Dispatch %d %d %p", fds[i].fd, EVENT_DEBUG("Dispatch %d %d %p", fds[n].fd,
fds[i].revents, eventLoop.handles[i].opaque); fds[n].revents, eventLoop.handles[i].opaque);
virEventUnlock(); virEventUnlock();
(cb)(eventLoop.handles[i].watch, (cb)(eventLoop.handles[i].watch,
fds[i].fd, hEvents, opaque); fds[n].fd, hEvents, opaque);
virEventLock(); virEventLock();
} }
n++;
} }
return 0; return 0;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册