We don't need placeholders for the old built-in poll server any more.
Change-Id: I3a510aec6a30bc2ac97676c400177cdfe557b8dc
Reviewed-on: https://go-review.googlesource.com/3863
Reviewed-by: Dmitry Vyukov <dvyukov@google.com>
func (pd *pollDesc) Close() {}
-func (pd *pollDesc) Lock() {}
-
-func (pd *pollDesc) Unlock() {}
-
-func (pd *pollDesc) Wakeup() {}
-
-func (pd *pollDesc) Evict() bool {
+func (pd *pollDesc) Evict() {
pd.closing = true
if pd.fd != nil {
syscall.StopIO(pd.fd.sysfd)
}
- return false
}
func (pd *pollDesc) Prepare(mode int) error {
pd.runtimeCtx = 0
}
-func (pd *pollDesc) Lock() {
-}
-
-func (pd *pollDesc) Unlock() {
-}
-
-func (pd *pollDesc) Wakeup() {
-}
-
// Evict evicts fd from the pending list, unblocking any I/O running on fd.
-// Return value is whether the pollServer should be woken up.
-func (pd *pollDesc) Evict() bool {
+func (pd *pollDesc) Evict() {
if pd.runtimeCtx == 0 {
- return false
+ return
}
runtime_pollUnblock(pd.runtimeCtx)
- return false
}
func (pd *pollDesc) Prepare(mode int) error {
}
func (fd *netFD) Close() error {
- fd.pd.Lock() // needed for both fd.incref(true) and pollDesc.Evict
if !fd.fdmu.IncrefAndClose() {
- fd.pd.Unlock()
return errClosing
}
// Unblock any I/O. Once it all unblocks and returns,
// the final decref will close fd.sysfd. This should happen
// fairly quickly, since all the I/O is non-blocking, and any
// attempts to block in the pollDesc will return errClosing.
- doWakeup := fd.pd.Evict()
- fd.pd.Unlock()
+ fd.pd.Evict()
fd.decref()
- if doWakeup {
- fd.pd.Wakeup()
- }
return nil
}