Commit 82ef961a authored by Bill Neubauer's avatar Bill Neubauer Committed by Shenghou Ma

runtime: fix runtime·netpoll() to call runtime·netpollready() only once per event.

R=golang-dev, minux.ma
CC=golang-dev
https://golang.org/cl/9808043
parent ae73b903
...@@ -74,7 +74,7 @@ runtime·netpoll(bool block) ...@@ -74,7 +74,7 @@ runtime·netpoll(bool block)
static int32 lasterr; static int32 lasterr;
Kevent events[64], *ev; Kevent events[64], *ev;
Timespec ts, *tp; Timespec ts, *tp;
int32 n, i; int32 n, i, mode;
G *gp; G *gp;
if(kq == -1) if(kq == -1)
...@@ -97,10 +97,13 @@ retry: ...@@ -97,10 +97,13 @@ retry:
} }
for(i = 0; i < n; i++) { for(i = 0; i < n; i++) {
ev = &events[i]; ev = &events[i];
mode = 0;
if(ev->filter == EVFILT_READ) if(ev->filter == EVFILT_READ)
runtime·netpollready(&gp, (PollDesc*)ev->udata, 'r'); mode += 'r';
if(ev->filter == EVFILT_WRITE) if(ev->filter == EVFILT_WRITE)
runtime·netpollready(&gp, (PollDesc*)ev->udata, 'w'); mode += 'w';
if(mode)
runtime·netpollready(&gp, (PollDesc*)ev->udata, mode);
} }
if(block && gp == nil) if(block && gp == nil)
goto retry; goto retry;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment