The <sys/queue.h> header file provides a set of macros that define and operate on the following data structures:
- singly linked lists (SLIST)
- doubly linked lists (LIST)
- singly linked tail queues (STAILQ)
- doubly linked tail queues (TAILQ)
- doubly linked circular queues (CIRCLEQ)
All structures support the following functionality:
- Insertion of a new entry at the head of the list.
- Insertion of a new entry after any element in the list.
- O(1) removal of an entry from the head of the list.
- Forward traversal through the list.
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.
Not in POSIX.1, POSIX.1-2001, or POSIX.1-2008. Present on the BSDs. <sys/queue.h> macros first appeared in 4.4BSD.
Some BSDs provide SIMPLEQ instead of STAILQ. They are identical, but for historical reasons they were named differently on different BSDs. STAILQ originated on FreeBSD, and SIMPLEQ originated on NetBSD. For compatibility reasons, some systems provide both sets of macros. Glibc provides both STAILQ and SIMPLEQ, which are identical except for a missing SIMPLEQ equivalent to STAILQ_CONCAT().
circleq(3), insque(3), list(3), slist(3), stailq(3), tailq(3)
This page is part of release 5.13 of the Linux man-pages project. A description of the project, information about reporting bugs, and the latest version of this page, can be found at https://www.kernel.org/doc/man-pages/.
circleq(3), insque(3), list(3), pobj_list_head(3), rc_find_pids(3), rc_stringlist(3), slist(3), stailq(3), tailq(3).
The man page queue(3) is an alias of queue(7).