MCPcopy Create free account
hub / github.com/F-Stack/f-stack / filt_sowrite

Function filt_sowrite

freebsd/kern/uipc_socket.c:3864–3892  ·  view source on GitHub ↗

ARGSUSED*/

Source from the content-addressed store, hash-verified

3862
3863/*ARGSUSED*/
3864static int
3865filt_sowrite(struct knote *kn, long hint)
3866{
3867 struct socket *so;
3868
3869 so = kn->kn_fp->f_data;
3870
3871 if (SOLISTENING(so))
3872 return (0);
3873
3874 SOCKBUF_LOCK_ASSERT(&so->so_snd);
3875 kn->kn_data = sbspace(&so->so_snd);
3876
3877 hhook_run_socket(so, kn, HHOOK_FILT_SOWRITE);
3878
3879 if (so->so_snd.sb_state & SBS_CANTSENDMORE) {
3880 kn->kn_flags |= EV_EOF;
3881 kn->kn_fflags = so->so_error;
3882 return (1);
3883 } else if (so->so_error) /* temporary udp error */
3884 return (1);
3885 else if (((so->so_state & SS_ISCONNECTED) == 0) &&
3886 (so->so_proto->pr_flags & PR_CONNREQUIRED))
3887 return (0);
3888 else if (kn->kn_sfflags & NOTE_LOWAT)
3889 return (kn->kn_data >= kn->kn_sdata);
3890 else
3891 return (kn->kn_data >= so->so_snd.sb_lowat);
3892}
3893
3894static int
3895filt_soempty(struct knote *kn, long hint)

Callers

nothing calls this directly

Calls 2

hhook_run_socketFunction · 0.85
sbspaceFunction · 0.50

Tested by

no test coverage detected