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

Method waitEvent

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

waitEvent implements blocking wait on given events until one of the events have been reported.

(ctx context.Context, event waiter.EventMask)

Source from the content-addressed store, hash-verified

816// waitEvent implements blocking wait on given events
817// until one of the events have been reported.
818func (s *socketOperations) waitEvent(ctx context.Context, event waiter.EventMask) error {
819 var err error
820 t := ctx.(*kernel.Task)
821 e, ch := waiter.NewChannelEntry(event | waiter.EventErr | waiter.EventHUp)
822 s.EventRegister(&e)
823
824 // It's possible events happens between last check and EventRegister.
825 // If this happens and we don't check readiness again, we would miss
826 // the event and get blocked forever.
827 if s.Readiness(event|waiter.EventErr|waiter.EventHUp) == 0 {
828 err = t.Block(ch)
829 }
830
831 s.EventUnregister(&e)
832 return err
833}
834
835// waitEventT implements blocking wait on given events
836// until one of the events have been reported or timeout based on given deadline.

Callers 4

AcceptMethod · 0.95
ConnectMethod · 0.95
RecvMsgMethod · 0.95
SendMsgMethod · 0.95

Calls 5

EventRegisterMethod · 0.95
ReadinessMethod · 0.95
EventUnregisterMethod · 0.95
NewChannelEntryFunction · 0.92
BlockMethod · 0.65

Tested by

no test coverage detected