summaryrefslogtreecommitdiffstats
path: root/sys/kern/uipc_socket.c
diff options
context:
space:
mode:
authorjlemon <jlemon@FreeBSD.org>2001-02-24 01:41:31 +0000
committerjlemon <jlemon@FreeBSD.org>2001-02-24 01:41:31 +0000
commit63c4f2f2808982c9504d4fd880bcd676d366f771 (patch)
tree6b1bdba8f3a21a6173d5460f262d602b7f0ab246 /sys/kern/uipc_socket.c
parentfbe6f98d7ed9b99d72f670b6555bac7de196ba8b (diff)
downloadFreeBSD-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.c4
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);
}
OpenPOWER on IntegriCloud