Commit 94599ea7 authored by Dmitriy Vyukov's avatar Dmitriy Vyukov

runtime: does not report duplicate errors in netpoll

Prevents storm of error messages if something goes wrong.
In the case of issue 5073 the epoll fd was closed by the test.
Update #5073.

R=golang-dev, r, rsc
CC=golang-dev
https://golang.org/cl/7966043
parent 9d97b55d
......@@ -57,6 +57,7 @@ runtime·netpollclose(int32 fd)
G*
runtime·netpoll(bool block)
{
static int32 lasterr;
EpollEvent events[128], *ev;
int32 n, i, waitms, mode;
G *gp;
......@@ -69,8 +70,10 @@ runtime·netpoll(bool block)
retry:
n = runtime·epollwait(epfd, events, nelem(events), waitms);
if(n < 0) {
if(n != -EINTR)
runtime·printf("epollwait failed with %d\n", -n);
if(n != -EINTR && n != lasterr) {
lasterr = n;
runtime·printf("runtime: epollwait on fd %d failed with %d\n", epfd, -n);
}
goto retry;
}
gp = nil;
......
......@@ -71,6 +71,7 @@ runtime·netpollclose(int32 fd)
G*
runtime·netpoll(bool block)
{
static int32 lasterr;
Kevent events[64], *ev;
Timespec ts, *tp;
int32 n, i;
......@@ -88,8 +89,10 @@ runtime·netpoll(bool block)
retry:
n = runtime·kevent(kq, nil, 0, events, nelem(events), tp);
if(n < 0) {
if(n != -EINTR)
runtime·printf("kqueue failed with %d\n", -n);
if(n != -EINTR && n != lasterr) {
lasterr = n;
runtime·printf("runtime: kevent on fd %d failed with %d\n", kq, -n);
}
goto retry;
}
for(i = 0; i < n; i++) {
......
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