diff options
author | jlemon <jlemon@FreeBSD.org> | 2001-02-24 01:41:31 +0000 |
---|---|---|
committer | jlemon <jlemon@FreeBSD.org> | 2001-02-24 01:41:31 +0000 |
commit | 63c4f2f2808982c9504d4fd880bcd676d366f771 (patch) | |
tree | 6b1bdba8f3a21a6173d5460f262d602b7f0ab246 /sys/kern/uipc_socket.c | |
parent | fbe6f98d7ed9b99d72f670b6555bac7de196ba8b (diff) | |
download | FreeBSD-src-63c4f2f2808982c9504d4fd880bcd676d366f771.zip FreeBSD-src-63c4f2f2808982c9504d4fd880bcd676d366f771.tar.gz |
Introduce a NOTE_LOWAT flag for use with the read/write filters, which
allow the watermark to be passed in via the data field during the EV_ADD
operation.
Hook this up to the socket read/write filters; if specified, it overrides
the so_{rcv|snd}.sb_lowat values in the filter.
Inspired by: "Ronald F. Guilmette" <rfg@monkeys.com>
Diffstat (limited to 'sys/kern/uipc_socket.c')
-rw-r--r-- | sys/kern/uipc_socket.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/sys/kern/uipc_socket.c b/sys/kern/uipc_socket.c index e4c1e9f..4243504 100644 --- a/sys/kern/uipc_socket.c +++ b/sys/kern/uipc_socket.c @@ -1587,6 +1587,8 @@ filt_soread(struct knote *kn, long hint) } if (so->so_error) /* temporary udp error */ return (1); + if (kn->kn_sfflags & NOTE_LOWAT) + return (kn->kn_data >= kn->kn_sdata); return (kn->kn_data >= so->so_rcv.sb_lowat); } @@ -1619,6 +1621,8 @@ filt_sowrite(struct knote *kn, long hint) if (((so->so_state & SS_ISCONNECTED) == 0) && (so->so_proto->pr_flags & PR_CONNREQUIRED)) return (0); + if (kn->kn_sfflags & NOTE_LOWAT) + return (kn->kn_data >= kn->kn_sdata); return (kn->kn_data >= so->so_snd.sb_lowat); } |