OpenBSD manual page server

Manual Page Search Parameters

INSQUE(3) Library Functions Manual INSQUE(3)

insque, remqueinsert/remove element from a queue

#include <search.h>

insque(void *elem, void *pred);

remque(void *elem);

These interfaces have been superseded by the queue(3) macros and are provided for compatibility with legacy code.

insque() and remque() manipulate queues built from doubly linked lists. The queue can be either circular or linear. Each element in the queue must be of the following form:

struct qelem {
	struct qelem   *q_forw;
	struct qelem   *q_back;
	char            q_data[];

The first two elements in the struct must be pointers of the same type that point to the previous and next elements in the queue respectively. Any subsequent data in the struct is application-dependent.

The insque() function inserts elem into a queue immediately after pred.

The remque() function removes elem from the queue.

These functions are not atomic unless that machine architecture allows it.


The insque() and remque() functions conform to the X/Open System Interfaces option of the IEEE Std 1003.1-2008 (“POSIX.1”) specification.

The insque() and remque() functions are derived from the insque and remque instructions on the VAX. They first appeared in 4.2BSD.

November 30, 2014 OpenBSD-current