"errors"
"io"
"sync"
- "sync/atomic"
"time"
)
waio *asyncIO
rtimer *time.Timer
wtimer *time.Timer
- rtimedout atomic.Bool // set true when read deadline has been reached
- wtimedout atomic.Bool // set true when write deadline has been reached
+ rtimedout bool // set true when read deadline has been reached
+ wtimedout bool // set true when write deadline has been reached
// Whether this is a normal file.
// On Plan 9 we do not use this package for ordinary files,
return 0, nil
}
fd.rmu.Lock()
- if fd.rtimedout.Load() {
+ if fd.rtimedout {
fd.rmu.Unlock()
return 0, ErrDeadlineExceeded
}
}
defer fd.writeUnlock()
fd.wmu.Lock()
- if fd.wtimedout.Load() {
+ if fd.wtimedout {
fd.wmu.Unlock()
return 0, ErrDeadlineExceeded
}
fd.rtimer.Stop()
fd.rtimer = nil
}
- fd.rtimedout.Store(false)
+ fd.rtimedout = false
}
if mode == 'w' || mode == 'r'+'w' {
fd.wmu.Lock()
fd.wtimer.Stop()
fd.wtimer = nil
}
- fd.wtimedout.Store(false)
+ fd.wtimedout = false
}
if !t.IsZero() && d > 0 {
// Interrupt I/O operation once timer has expired
// deadline was changed
return
}
- fd.rtimedout.Store(true)
+ fd.rtimedout = true
if fd.raio != nil {
fd.raio.Cancel()
}
// deadline was changed
return
}
- fd.wtimedout.Store(true)
+ fd.wtimedout = true
if fd.waio != nil {
fd.waio.Cancel()
}
if !t.IsZero() && d < 0 {
// Interrupt current I/O operation
if mode == 'r' || mode == 'r'+'w' {
- fd.rtimedout.Store(true)
+ fd.rtimedout = true
if fd.raio != nil {
fd.raio.Cancel()
}
}
if mode == 'w' || mode == 'r'+'w' {
- fd.wtimedout.Store(true)
+ fd.wtimedout = true
if fd.waio != nil {
fd.waio.Cancel()
}