diff options
author | Ian Lance Taylor <ian@gcc.gnu.org> | 2016-07-22 18:15:38 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@gcc.gnu.org> | 2016-07-22 18:15:38 +0000 |
commit | 22b955cca564a9a3a5b8c9d9dd1e295b7943c128 (patch) | |
tree | abdbd898676e1f853fca2d7e031d105d7ebcf676 /libgo/go/net/fd_poll_runtime.go | |
parent | 9d04a3af4c6491536badf6bde9707c907e4d196b (diff) | |
download | gcc-22b955cca564a9a3a5b8c9d9dd1e295b7943c128.zip gcc-22b955cca564a9a3a5b8c9d9dd1e295b7943c128.tar.gz gcc-22b955cca564a9a3a5b8c9d9dd1e295b7943c128.tar.bz2 |
libgo: update to go1.7rc3
Reviewed-on: https://go-review.googlesource.com/25150
From-SVN: r238662
Diffstat (limited to 'libgo/go/net/fd_poll_runtime.go')
-rw-r--r-- | libgo/go/net/fd_poll_runtime.go | 44 |
1 files changed, 25 insertions, 19 deletions
diff --git a/libgo/go/net/fd_poll_runtime.go b/libgo/go/net/fd_poll_runtime.go index 8522cce..6c1d095 100644 --- a/libgo/go/net/fd_poll_runtime.go +++ b/libgo/go/net/fd_poll_runtime.go @@ -30,7 +30,7 @@ type pollDesc struct { var serverInit sync.Once -func (pd *pollDesc) Init(fd *netFD) error { +func (pd *pollDesc) init(fd *netFD) error { serverInit.Do(runtime_pollServerInit) ctx, errno := runtime_pollOpen(uintptr(fd.sysfd)) if errno != 0 { @@ -40,7 +40,7 @@ func (pd *pollDesc) Init(fd *netFD) error { return nil } -func (pd *pollDesc) Close() { +func (pd *pollDesc) close() { if pd.runtimeCtx == 0 { return } @@ -49,49 +49,49 @@ func (pd *pollDesc) Close() { } // Evict evicts fd from the pending list, unblocking any I/O running on fd. -func (pd *pollDesc) Evict() { +func (pd *pollDesc) evict() { if pd.runtimeCtx == 0 { return } runtime_pollUnblock(pd.runtimeCtx) } -func (pd *pollDesc) Prepare(mode int) error { +func (pd *pollDesc) prepare(mode int) error { res := runtime_pollReset(pd.runtimeCtx, mode) return convertErr(res) } -func (pd *pollDesc) PrepareRead() error { - return pd.Prepare('r') +func (pd *pollDesc) prepareRead() error { + return pd.prepare('r') } -func (pd *pollDesc) PrepareWrite() error { - return pd.Prepare('w') +func (pd *pollDesc) prepareWrite() error { + return pd.prepare('w') } -func (pd *pollDesc) Wait(mode int) error { +func (pd *pollDesc) wait(mode int) error { res := runtime_pollWait(pd.runtimeCtx, mode) return convertErr(res) } -func (pd *pollDesc) WaitRead() error { - return pd.Wait('r') +func (pd *pollDesc) waitRead() error { + return pd.wait('r') } -func (pd *pollDesc) WaitWrite() error { - return pd.Wait('w') +func (pd *pollDesc) waitWrite() error { + return pd.wait('w') } -func (pd *pollDesc) WaitCanceled(mode int) { +func (pd *pollDesc) waitCanceled(mode int) { runtime_pollWaitCanceled(pd.runtimeCtx, mode) } -func (pd *pollDesc) WaitCanceledRead() { - pd.WaitCanceled('r') +func (pd *pollDesc) waitCanceledRead() { + pd.waitCanceled('r') } -func (pd *pollDesc) WaitCanceledWrite() { - pd.WaitCanceled('w') +func (pd *pollDesc) waitCanceledWrite() { + pd.waitCanceled('w') } func convertErr(res int) error { @@ -120,7 +120,13 @@ func (fd *netFD) setWriteDeadline(t time.Time) error { } func setDeadlineImpl(fd *netFD, t time.Time, mode int) error { - d := runtimeNano() + int64(t.Sub(time.Now())) + diff := int64(t.Sub(time.Now())) + d := runtimeNano() + diff + if d <= 0 && diff > 0 { + // If the user has a deadline in the future, but the delay calculation + // overflows, then set the deadline to the maximum possible value. + d = 1<<63 - 1 + } if t.IsZero() { d = 0 } |