From: patrick Date: Fri, 9 Feb 2018 02:26:33 +0000 (+0000) Subject: Extend the mbuf queue API with an accessor that checks whether X-Git-Url: http://artulab.com/gitweb/?a=commitdiff_plain;h=6fa8084961d20dd7a3d9682892eef3f850dc19e9;p=openbsd Extend the mbuf queue API with an accessor that checks whether or not the mbuf queue is full. ok dlg@ --- diff --git a/share/man/man9/mq_init.9 b/share/man/man9/mq_init.9 index e37d24b4966..58acf26b344 100644 --- a/share/man/man9/mq_init.9 +++ b/share/man/man9/mq_init.9 @@ -1,4 +1,4 @@ -.\" $OpenBSD: mq_init.9,v 1.8 2016/04/15 05:05:21 dlg Exp $ +.\" $OpenBSD: mq_init.9,v 1.9 2018/02/09 02:26:33 patrick Exp $ .\" .\" Copyright (c) 2015 David Gwynne .\" @@ -14,7 +14,7 @@ .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. .\" -.Dd $Mdocdate: April 15 2016 $ +.Dd $Mdocdate: February 9 2018 $ .Dt MQ_INIT 9 .Os .Sh NAME @@ -26,6 +26,7 @@ .Nm mq_dechain , .Nm mq_len , .Nm mq_empty , +.Nm mq_full , .Nm mq_purge , .Nm mq_drops , .Nm mq_set_maxlen , @@ -49,6 +50,8 @@ .Fn mq_len "struct mbuf_queue *mq" .Ft int .Fn mq_empty "struct mbuf_queue *mq" +.Ft int +.Fn mq_full "struct mbuf_queue *mq" .Ft unsigned int .Fn mq_purge "struct mbuf_queue *mq" .Ft unsigned int @@ -135,6 +138,10 @@ mbuf queue. Return if the .Fa mq mbuf queue is empty. +.It Fn mq_full "struct mbuf_queue *mq" +Return if the +.Fa mq +mbuf queue is full. .It Fn mq_purge "struct mbuf_queue *mq" Free all the mbufs on the .Fa mq @@ -163,6 +170,7 @@ already exist on the queue. .Fn mq_dechain , .Fn mq_len , .Fn mq_empty , +.Fn mq_full , .Fn mq_purge , .Fn mq_drops , .Fn mq_set_maxlen , @@ -189,6 +197,9 @@ returns the number of mbufs on the queue. .Fn mq_empty returns a non-zero value if the queue is empty, otherwise 0. .Pp +.Fn mq_full +returns a non-zero value if the queue is full, otherwise 0. +.Pp .Fn mq_enqueue returns 0 if the mbuf was successfully queued, or non-zero if the mbuf was freed because it would cause the queue to exceed its maximum diff --git a/sys/sys/mbuf.h b/sys/sys/mbuf.h index 5a2dbbe8885..825cc801843 100644 --- a/sys/sys/mbuf.h +++ b/sys/sys/mbuf.h @@ -1,4 +1,4 @@ -/* $OpenBSD: mbuf.h,v 1.233 2018/02/06 23:44:48 henning Exp $ */ +/* $OpenBSD: mbuf.h,v 1.234 2018/02/09 02:26:33 patrick Exp $ */ /* $NetBSD: mbuf.h,v 1.19 1996/02/09 18:25:14 christos Exp $ */ /* @@ -555,6 +555,7 @@ unsigned int mq_purge(struct mbuf_queue *); #define mq_len(_mq) ml_len(&(_mq)->mq_list) #define mq_empty(_mq) ml_empty(&(_mq)->mq_list) +#define mq_full(_mq) (mq_len((_mq)) >= (_mq)->mq_maxlen) #define mq_drops(_mq) ((_mq)->mq_drops) #define mq_set_maxlen(_mq, _l) ((_mq)->mq_maxlen = (_l))