diff options
Diffstat (limited to 'man3/queue.3')
| -rw-r--r-- | man3/queue.3 | 235 |
1 files changed, 0 insertions, 235 deletions
diff --git a/man3/queue.3 b/man3/queue.3 index cf9770a209..f6e3b9369b 100644 --- a/man3/queue.3 +++ b/man3/queue.3 @@ -169,241 +169,6 @@ The termination condition for traversal is more complex. .It Code size is about 40% greater and operations run about 45% slower than lists. .El -.Pp -In the macro definitions, -.Fa TYPE -is the name of a user defined structure, -that must contain a field of type -.Li SLIST_ENTRY , -.Li STAILQ_ENTRY , -.Li LIST_ENTRY , -.Li TAILQ_ENTRY , -or -.Li CIRCLEQ_ENTRY , -named -.Fa NAME . -The argument -.Fa HEADNAME -is the name of a user defined structure that must be declared -using the macros -.Li SLIST_HEAD , -.Li STAILQ_HEAD , -.Li LIST_HEAD , -.Li TAILQ_HEAD , -or -.Li CIRCLEQ_HEAD . -See the examples below for further explanation of how these -macros are used. -.Ss Tail queues -A tail queue is headed by a structure defined by the -.Nm TAILQ_HEAD -macro. -This structure contains a pair of pointers, -one to the first element in the tail queue and the other to -the last element in the tail queue. -The elements are doubly linked so that an arbitrary element can be -removed without traversing the tail queue. -New elements can be added to the tail queue after an existing element, -before an existing element, at the head of the tail queue, -or at the end of the tail queue. -A -.Fa TAILQ_HEAD -structure is declared as follows: -.Bd -literal -offset indent -TAILQ_HEAD(HEADNAME, TYPE) head; -.Ed -.Pp -where -.Li HEADNAME -is the name of the structure to be defined, and -.Li TYPE -is the type of the elements to be linked into the tail queue. -A pointer to the head of the tail queue can later be declared as: -.Bd -literal -offset indent -struct HEADNAME *headp; -.Ed -.Pp -(The names -.Li head -and -.Li headp -are user selectable.) -.Pp -The macro -.Nm TAILQ_HEAD_INITIALIZER -evaluates to an initializer for the tail queue -.Fa head . -.Pp -The macro -.Nm TAILQ_CONCAT -concatenates the tail queue headed by -.Fa head2 -onto the end of the one headed by -.Fa head1 -removing all entries from the former. -.Pp -The macro -.Nm TAILQ_EMPTY -evaluates to true if there are no items on the tail queue. -.Pp -The macro -.Nm TAILQ_ENTRY -declares a structure that connects the elements in -the tail queue. -.Pp -The macro -.Nm TAILQ_FIRST -returns the first item on the tail queue or NULL if the tail queue -is empty. -.Pp -The macro -.Nm TAILQ_FOREACH -traverses the tail queue referenced by -.Fa head -in the forward direction, assigning each element in turn to -.Fa var . -.Fa var -is set to -.Dv NULL -if the loop completes normally, or if there were no elements. -.\" .Pp -.\" The macro -.\" .Nm TAILQ_FOREACH_FROM -.\" behaves identically to -.\" .Nm TAILQ_FOREACH -.\" when -.\" .Fa var -.\" is NULL, else it treats -.\" .Fa var -.\" as a previously found TAILQ element and begins the loop at -.\" .Fa var -.\" instead of the first element in the TAILQ referenced by -.\" .Fa head . -.Pp -The macro -.Nm TAILQ_FOREACH_REVERSE -traverses the tail queue referenced by -.Fa head -in the reverse direction, assigning each element in turn to -.Fa var . -.\" .Pp -.\" The macro -.\" .Nm TAILQ_FOREACH_REVERSE_FROM -.\" behaves identically to -.\" .Nm TAILQ_FOREACH_REVERSE -.\" when -.\" .Fa var -.\" is NULL, else it treats -.\" .Fa var -.\" as a previously found TAILQ element and begins the reverse loop at -.\" .Fa var -.\" instead of the last element in the TAILQ referenced by -.\" .Fa head . -.\" .Pp -.\" The macros -.\" .Nm TAILQ_FOREACH_SAFE -.\" and -.\" .Nm TAILQ_FOREACH_REVERSE_SAFE -.\" traverse the list referenced by -.\" .Fa head -.\" in the forward or reverse direction respectively, -.\" assigning each element in turn to -.\" .Fa var . -.\" However, unlike their unsafe counterparts, -.\" .Nm TAILQ_FOREACH -.\" and -.\" .Nm TAILQ_FOREACH_REVERSE -.\" permit to both remove -.\" .Fa var -.\" as well as free it from within the loop safely without interfering with the -.\" traversal. -.\" .Pp -.\" The macro -.\" .Nm TAILQ_FOREACH_FROM_SAFE -.\" behaves identically to -.\" .Nm TAILQ_FOREACH_SAFE -.\" when -.\" .Fa var -.\" is NULL, else it treats -.\" .Fa var -.\" as a previously found TAILQ element and begins the loop at -.\" .Fa var -.\" instead of the first element in the TAILQ referenced by -.\" .Fa head . -.\" .Pp -.\" The macro -.\" .Nm TAILQ_FOREACH_REVERSE_FROM_SAFE -.\" behaves identically to -.\" .Nm TAILQ_FOREACH_REVERSE_SAFE -.\" when -.\" .Fa var -.\" is NULL, else it treats -.\" .Fa var -.\" as a previously found TAILQ element and begins the reverse loop at -.\" .Fa var -.\" instead of the last element in the TAILQ referenced by -.\" .Fa head . -.Pp -The macro -.Nm TAILQ_INIT -initializes the tail queue referenced by -.Fa head . -.Pp -The macro -.Nm TAILQ_INSERT_HEAD -inserts the new element -.Fa elm -at the head of the tail queue. -.Pp -The macro -.Nm TAILQ_INSERT_TAIL -inserts the new element -.Fa elm -at the end of the tail queue. -.Pp -The macro -.Nm TAILQ_INSERT_AFTER -inserts the new element -.Fa elm -after the element -.Fa listelm . -.Pp -The macro -.Nm TAILQ_INSERT_BEFORE -inserts the new element -.Fa elm -before the element -.Fa listelm . -.Pp -The macro -.Nm TAILQ_LAST -returns the last item on the tail queue. -If the tail queue is empty the return value is -.Dv NULL . -.Pp -The macro -.Nm TAILQ_NEXT -returns the next item on the tail queue, or NULL if this item is the last. -.Pp -The macro -.Nm TAILQ_PREV -returns the previous item on the tail queue, or NULL if this item -is the first. -.Pp -The macro -.Nm TAILQ_REMOVE -removes the element -.Fa elm -from the tail queue. -.\" .Pp -.\" The macro -.\" .Nm TAILQ_SWAP -.\" swaps the contents of -.\" .Fa head1 -.\" and -.\" .Fa head2 . -.Pp -See the EXAMPLES section below for an example program using a tail queue. .Sh EXAMPLES .Ss Tail queue example .Bd -literal |
