1 // Copyright 2013 The Go Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style
3 // license that can be found in the LICENSE file.
13 type pollDesc
struct {
18 func (pd
*pollDesc
) init(fd
*netFD
) error
{ pd
.fd
= fd
; return nil }
20 func (pd
*pollDesc
) close() {}
22 func (pd
*pollDesc
) evict() {
25 syscall
.StopIO(pd
.fd
.sysfd
)
26 runtime
.KeepAlive(pd
.fd
)
30 func (pd
*pollDesc
) prepare(mode
int) error
{
37 func (pd
*pollDesc
) prepareRead() error
{ return pd
.prepare('r') }
39 func (pd
*pollDesc
) prepareWrite() error
{ return pd
.prepare('w') }
41 func (pd
*pollDesc
) wait(mode
int) error
{
48 func (pd
*pollDesc
) waitRead() error
{ return pd
.wait('r') }
50 func (pd
*pollDesc
) waitWrite() error
{ return pd
.wait('w') }
52 func (pd
*pollDesc
) waitCanceled(mode
int) {}
54 func (pd
*pollDesc
) waitCanceledRead() {}
56 func (pd
*pollDesc
) waitCanceledWrite() {}
58 func (fd
*netFD
) setDeadline(t time
.Time
) error
{
59 return setDeadlineImpl(fd
, t
, 'r'+'w')
62 func (fd
*netFD
) setReadDeadline(t time
.Time
) error
{
63 return setDeadlineImpl(fd
, t
, 'r')
66 func (fd
*netFD
) setWriteDeadline(t time
.Time
) error
{
67 return setDeadlineImpl(fd
, t
, 'w')
70 func setDeadlineImpl(fd
*netFD
, t time
.Time
, mode
int) error
{
75 if err
:= fd
.incref(); err
!= nil {
80 syscall
.SetReadDeadline(fd
.sysfd
, d
)
82 syscall
.SetWriteDeadline(fd
.sysfd
, d
)
84 syscall
.SetReadDeadline(fd
.sysfd
, d
)
85 syscall
.SetWriteDeadline(fd
.sysfd
, d
)