buf_ring.9 (233648) | buf_ring.9 (241037) |
---|---|
1.\" Copyright (c) 2009 Bitgravity Inc 2.\" Written by: Kip Macy <kmacy@FreeBSD.org> 3.\" All rights reserved. 4.\" 5.\" Redistribution and use in source and binary forms, with or without 6.\" modification, are permitted provided that the following conditions 7.\" are met: 8.\" 1. Redistributions of source code must retain the above copyright --- 9 unchanged lines hidden (view full) --- 18.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 19.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 20.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 21.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 22.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 23.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 24.\" SUCH DAMAGE. 25.\" | 1.\" Copyright (c) 2009 Bitgravity Inc 2.\" Written by: Kip Macy <kmacy@FreeBSD.org> 3.\" All rights reserved. 4.\" 5.\" Redistribution and use in source and binary forms, with or without 6.\" modification, are permitted provided that the following conditions 7.\" are met: 8.\" 1. Redistributions of source code must retain the above copyright --- 9 unchanged lines hidden (view full) --- 18.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 19.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 20.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 21.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 22.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 23.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 24.\" SUCH DAMAGE. 25.\" |
26.\" $FreeBSD: head/share/man/man9/buf_ring.9 233648 2012-03-29 05:02:12Z eadler $ | 26.\" $FreeBSD: head/share/man/man9/buf_ring.9 241037 2012-09-28 18:28:27Z glebius $ |
27.\" | 27.\" |
28.Dd January 30, 2012 | 28.Dd September 27, 2012 |
29.Dt BUF_RING 9 30.Os 31.Sh NAME 32.Nm buf_ring , 33.Nm buf_ring_alloc , 34.Nm buf_ring_free , 35.Nm buf_ring_enqueue , | 29.Dt BUF_RING 9 30.Os 31.Sh NAME 32.Nm buf_ring , 33.Nm buf_ring_alloc , 34.Nm buf_ring_free , 35.Nm buf_ring_enqueue , |
36.Nm buf_ring_enqueue_bytes , | |
37.Nm buf_ring_dequeue_mc , 38.Nm buf_ring_dequeue_sc , 39.Nm buf_ring_count , 40.Nm buf_ring_empty , 41.Nm buf_ring_full , 42.Nm buf_ring_peek , 43.Nd multi-producer, {single, multi}-consumer lock-less ring buffer 44.Sh SYNOPSIS 45.In sys/param.h 46.In sys/buf_ring.h 47.Ft struct buf_ring * 48.Fn buf_ring_alloc "int count" "struct malloc_type *type" "int flags" "struct mtx *sc_lock" 49.Ft void 50.Fn buf_ring_free "struct buf_ring *br" "struct malloc_type *type" 51.Ft int 52.Fn buf_ring_enqueue "struct buf_ring *br" "void *buf" | 36.Nm buf_ring_dequeue_mc , 37.Nm buf_ring_dequeue_sc , 38.Nm buf_ring_count , 39.Nm buf_ring_empty , 40.Nm buf_ring_full , 41.Nm buf_ring_peek , 42.Nd multi-producer, {single, multi}-consumer lock-less ring buffer 43.Sh SYNOPSIS 44.In sys/param.h 45.In sys/buf_ring.h 46.Ft struct buf_ring * 47.Fn buf_ring_alloc "int count" "struct malloc_type *type" "int flags" "struct mtx *sc_lock" 48.Ft void 49.Fn buf_ring_free "struct buf_ring *br" "struct malloc_type *type" 50.Ft int 51.Fn buf_ring_enqueue "struct buf_ring *br" "void *buf" |
53.Ft int 54.Fn buf_ring_enqueue_bytes "struct buf_ring *br" "void *buf" "int bytes" | |
55.Ft void * 56.Fn buf_ring_dequeue_mc "struct buf_ring *br" 57.Ft void * 58.Fn buf_ring_dequeue_sc "struct buf_ring *br" 59.Ft int 60.Fn buf_ring_count "struct buf_ring *br" 61.Ft int 62.Fn buf_ring_empty "struct buf_ring *br" --- 23 unchanged lines hidden (view full) --- 86function is used to free a buf_ring. 87The user is responsible for freeing any enqueued items. 88.Pp 89The 90.Fn buf_ring_enqueue 91function is used to enqueue a buffer to a buf_ring. 92.Pp 93The | 52.Ft void * 53.Fn buf_ring_dequeue_mc "struct buf_ring *br" 54.Ft void * 55.Fn buf_ring_dequeue_sc "struct buf_ring *br" 56.Ft int 57.Fn buf_ring_count "struct buf_ring *br" 58.Ft int 59.Fn buf_ring_empty "struct buf_ring *br" --- 23 unchanged lines hidden (view full) --- 83function is used to free a buf_ring. 84The user is responsible for freeing any enqueued items. 85.Pp 86The 87.Fn buf_ring_enqueue 88function is used to enqueue a buffer to a buf_ring. 89.Pp 90The |
94.Fn buf_ring_enqueue_bytes 95function is used to enqueue a buffer to a buf_ring and increment the 96number of bytes enqueued by 97.Fa bytes . 98.Pp 99The | |
100.Fn buf_ring_dequeue_mc 101function is a multi-consumer safe way of dequeueing elements from a buf_ring. 102.Pp 103The 104.Fn buf_ring_dequeue_sc 105function is a single-consumer interface to dequeue elements - requiring 106the user to serialize accesses with a lock. 107.Pp --- 21 unchanged lines hidden (view full) --- 129.Fn buf_ring_peek 130function returns a pointer to the last element in the buf_ring if the 131buf_ring is not empty, 132.Dv NULL 133otherwise. 134.Sh RETURN VALUES 135The 136.Fn buf_ring_enqueue | 91.Fn buf_ring_dequeue_mc 92function is a multi-consumer safe way of dequeueing elements from a buf_ring. 93.Pp 94The 95.Fn buf_ring_dequeue_sc 96function is a single-consumer interface to dequeue elements - requiring 97the user to serialize accesses with a lock. 98.Pp --- 21 unchanged lines hidden (view full) --- 120.Fn buf_ring_peek 121function returns a pointer to the last element in the buf_ring if the 122buf_ring is not empty, 123.Dv NULL 124otherwise. 125.Sh RETURN VALUES 126The 127.Fn buf_ring_enqueue |
137and 138.Fn buf_ring_enqueue_bytes 139functions return | 128function return |
140.Er ENOBUFS 141if there are no available slots in the buf_ring. 142.Sh HISTORY 143These functions were introduced in 144.Fx 8.0 . | 129.Er ENOBUFS 130if there are no available slots in the buf_ring. 131.Sh HISTORY 132These functions were introduced in 133.Fx 8.0 . |