mirror of
https://github.com/netbirdio/gvisor.git
synced 2026-05-22 17:12:49 -07:00
Add POLLRDNORM/POLLWRNORM support.
On Linux these are meant to be equivalent to POLLIN/POLLOUT. Rather than hack these on in sys_poll etc it felt cleaner to just cleanup the call sites to notify for both events. This is what linux does as well. Fixes #5544 PiperOrigin-RevId: 364859977
This commit is contained in:
committed by
gVisor bot
parent
72ff6a1cac
commit
e7ca2a51a8
@@ -316,7 +316,7 @@ func (conn *connection) callFutureLocked(t *kernel.Task, r *Request) (*futureRes
|
||||
conn.fd.completions[r.id] = fut
|
||||
|
||||
// Signal the readers that there is something to read.
|
||||
conn.fd.waitQueue.Notify(waiter.EventIn)
|
||||
conn.fd.waitQueue.Notify(waiter.ReadableEvents)
|
||||
|
||||
return fut, nil
|
||||
}
|
||||
|
||||
@@ -368,10 +368,10 @@ func (fd *DeviceFD) readinessLocked(mask waiter.EventMask) waiter.EventMask {
|
||||
}
|
||||
|
||||
// FD is always writable.
|
||||
ready |= waiter.EventOut
|
||||
ready |= waiter.WritableEvents
|
||||
if !fd.queue.Empty() {
|
||||
// Have reqs available, FD is readable.
|
||||
ready |= waiter.EventIn
|
||||
ready |= waiter.ReadableEvents
|
||||
}
|
||||
|
||||
return ready & mask
|
||||
|
||||
@@ -180,7 +180,7 @@ func ReadTest(serverTask *kernel.Task, fd *vfs.FileDescription, inIOseq usermem.
|
||||
|
||||
// Register for notifications.
|
||||
w, ch := waiter.NewChannelEntry(nil)
|
||||
dev.EventRegister(&w, waiter.EventIn)
|
||||
dev.EventRegister(&w, waiter.ReadableEvents)
|
||||
for {
|
||||
// Issue the request and break out if it completes with anything other than
|
||||
// "would block".
|
||||
|
||||
@@ -286,7 +286,7 @@ func (fs *filesystem) Release(ctx context.Context) {
|
||||
fs.umounted = true
|
||||
fs.conn.Abort(ctx)
|
||||
// Notify all the waiters on this fd.
|
||||
fs.conn.fd.waitQueue.Notify(waiter.EventIn)
|
||||
fs.conn.fd.waitQueue.Notify(waiter.ReadableEvents)
|
||||
|
||||
fs.conn.fd.mu.Unlock()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user