MCPcopy Index your code
hub / github.com/google/gvisor / Readiness

Method Readiness

pkg/sentry/socket/plugin/stack/socket.go:264–283  ·  view source on GitHub ↗

Readiness implements socket.Socket.Readiness.

(mask waiter.EventMask)

Source from the content-addressed store, hash-verified

262
263// Readiness implements socket.Socket.Readiness.
264func (s *socketOperations) Readiness(mask waiter.EventMask) waiter.EventMask {
265 var events waiter.EventMask
266
267 evInfo := &s.eventInfo
268 iomask := mask & (waiter.EventIn | waiter.EventOut)
269
270 // Fast path condition:
271 // 1. The event needed has been reported by plugin stack io-thread; or
272 // 2. POLLIN or POLLOUT event has been reported by io-thread.
273 // Directly report current event without invoking cgo Readiness again.
274 if evInfo.Ready&iomask == iomask {
275 events = evInfo.Ready & mask
276 // Clear plugin stack eventInfo record after consuming IN/OUT event.
277 evInfo.Ready &= ^iomask
278 } else {
279 events = waiter.EventMask(cgo.Readiness(s.fd, uint64(mask)))
280 }
281
282 return events
283}
284
285// Epollable implements socket.Socket.Epollable.
286func (s *socketOperations) Epollable() bool {

Callers 2

waitEventMethod · 0.95
waitEventTMethod · 0.95

Calls 2

EventMaskTypeAlias · 0.92
ReadinessFunction · 0.92

Tested by

no test coverage detected