aboutsummaryrefslogtreecommitdiffstats
path: root/man7/queue.7
diff options
context:
space:
mode:
authorAlejandro Colomar <colomar.6.4.3@gmail.com>2020-10-25 21:46:16 +0100
committerMichael Kerrisk <mtk.manpages@gmail.com>2020-10-25 22:17:05 +0100
commitd9a0505f71de386ffd570ea043512a1b86874c93 (patch)
tree8f029de62b2f37c3dfce17ad42340eec7a720301 /man7/queue.7
parent11fd5e7c2adf91e562465bea8250e019aebaad2f (diff)
downloadman-pages-d9a0505f71de386ffd570ea043512a1b86874c93.tar.gz
queue.3, queue.7: Move queue.3 to queue.7
After forking slist.3, list.3, tailq.3, stailq.3 & circleq.3 in the previous commits, this page no longer belongs in Section 3 of the manual pages. According to its contents, the most suitable section is Section 7. Because of legacy reasons, a link queue.3 -> queue(7) would be appropriate. Signed-off-by: Alejandro Colomar <colomar.6.4.3@gmail.com> Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
Diffstat (limited to 'man7/queue.7')
-rw-r--r--man7/queue.7148
1 files changed, 148 insertions, 0 deletions
diff --git a/man7/queue.7 b/man7/queue.7
new file mode 100644
index 0000000000..1fe48bd57b
--- /dev/null
+++ b/man7/queue.7
@@ -0,0 +1,148 @@
+.\" Copyright (c) 1993
+.\" The Regents of the University of California. All rights reserved.
+.\" and Copyright (c) 2020 by Alejandro Colomar <colomar.6.4.3@gmail.com>
+.\"
+.\" %%%LICENSE_START(BSD_3_CLAUSE_UCB)
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in the
+.\" documentation and/or other materials provided with the distribution.
+.\" 3. Neither the name of the University nor the names of its contributors
+.\" may be used to endorse or promote products derived from this software
+.\" without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\" %%%LICENSE_END
+.\"
+.\"
+.TH QUEUE 7 2015-02-7 "GNU" "Linux Programmer's Manual"
+.SH NAME
+queue \- implementations of linked lists and queues
+.SH DESCRIPTION
+The
+.I <sys/queue.h>
+header file provides a set of macros that
+define and operate on the following data structures:
+.IP * 3
+singly linked lists (SLIST)
+.IP *
+doubly linked lists (LIST)
+.IP *
+singly linked tail queues (STAILQ)
+.IP *
+doubly linked tail queues (TAILQ)
+.IP *
+doubly linked circular queues (CIRCLEQ)
+.PP
+All structures support the following functionality:
+.IP * 3
+Insertion of a new entry at the head of the list.
+.IP *
+Insertion of a new entry after any element in the list.
+.IP *
+O(1) removal of an entry from the head of the list.
+.IP *
+Forward traversal through the list.
+.\".IP *
+.\" Swapping the contents of two lists.
+.PP
+Code size and execution time
+depend on the complexity of the data structure being used,
+so programmers should take care to choose the appropriate one.
+.SS Singly linked lists (SLIST)
+Singly linked lists are the simplest
+and support only the above functionality.
+Singly linked lists are ideal for applications with
+large datasets and few or no removals,
+or for implementing a LIFO queue.
+Singly linked lists add the following functionality:
+.IP * 3
+O(n) removal of any entry in the list.
+.SS Singly linked tail queues (STAILQ)
+Singly linked tail queues add the following functionality:
+.IP * 3
+Entries can be added at the end of a list.
+.IP *
+O(n) removal of any entry in the list.
+.IP *
+They may be concatenated.
+.PP
+However:
+.IP * 3
+All list insertions must specify the head of the list.
+.IP *
+Each head entry requires two pointers rather than one.
+.PP
+Singly linked tail queues are ideal for applications with
+large datasets and few or no removals,
+or for implementing a FIFO queue.
+.SS Doubly linked data structures
+All doubly linked types of data structures (lists and tail queues)
+additionally allow:
+.IP * 3
+Insertion of a new entry before any element in the list.
+.IP *
+O(1) removal of any entry in the list.
+.PP
+However:
+.IP * 3
+Each element requires two pointers rather than one.
+.SS Doubly linked lists (LIST)
+Linked lists are the simplest of the doubly linked data structures.
+They add the following functionality over the above:
+.IP * 3
+They may be traversed backwards.
+.PP
+However:
+.IP * 3
+To traverse backwards, an entry to begin the traversal and the list in
+which it is contained must be specified.
+.SS Doubly linked tail queues (TAILQ)
+Tail queues add the following functionality:
+.IP * 3
+Entries can be added at the end of a list.
+.IP *
+They may be traversed backwards, from tail to head.
+.IP *
+They may be concatenated.
+.PP
+However:
+.IP * 3
+All list insertions and removals must specify the head of the list.
+.IP *
+Each head entry requires two pointers rather than one.
+.SS Doubly linked circular queues (CIRCLEQ)
+Circular queues add the following functionality over the above:
+.IP * 3
+The first and last entries are connected.
+.PP
+However:
+.IP * 3
+The termination condition for traversal is more complex.
+.SH CONFORMING TO
+Not in POSIX.1, POSIX.1-2001 or POSIX.1-2008.
+Present on the BSDs.
+.I <sys/queue.h>
+macros first appeared in 4.4BSD.
+.SH SEE ALSO
+.BR circleq (3),
+.BR insque (3),
+.BR list (3),
+.BR slist (3),
+.BR stailq (3),
+.BR tailq (3)
+.\" .BR tree (3)