1105245Srobert/*
2105245Srobert * Initial implementation:
3105245Srobert * Copyright (c) 2002 Robert Drehmel
4105245Srobert * All rights reserved.
5105245Srobert *
6105245Srobert * As long as the above copyright statement and this notice remain
7105245Srobert * unchanged, you can do what ever you want with this file.
8105245Srobert */
9105245Srobert#include <sys/cdefs.h>
10105245Srobert__FBSDID("$FreeBSD$");
11105245Srobert
12105245Srobert#define	_SEARCH_PRIVATE
13105245Srobert#include <search.h>
14105245Srobert#ifdef DEBUG
15105245Srobert#include <stdio.h>
16105245Srobert#else
17105245Srobert#include <stdlib.h>	/* for NULL */
18105245Srobert#endif
19105245Srobert
20108644Stjrvoid
21108644Stjrinsque(void *element, void *pred)
22105245Srobert{
23105245Srobert	struct que_elem *prev, *next, *elem;
24105245Srobert
25105245Srobert	elem = (struct que_elem *)element;
26105245Srobert	prev = (struct que_elem *)pred;
27105245Srobert
28105245Srobert	if (prev == NULL) {
29105245Srobert		elem->prev = elem->next = NULL;
30105245Srobert		return;
31105245Srobert	}
32105245Srobert
33105245Srobert	next = prev->next;
34105245Srobert	if (next != NULL) {
35105245Srobert#ifdef DEBUG
36105245Srobert		if (next->prev != prev) {
37105245Srobert			fprintf(stderr, "insque: Inconsistency detected:"
38105245Srobert			    " next(%p)->prev(%p) != prev(%p)\n",
39105245Srobert			    next, next->prev, prev);
40105245Srobert		}
41105245Srobert#endif
42105245Srobert		next->prev = elem;
43105245Srobert	}
44105245Srobert	prev->next = elem;
45105245Srobert	elem->prev = prev;
46105245Srobert	elem->next = next;
47105245Srobert}
48