1 /* 2 * Initial implementation: 3 * Copyright (c) 2002 Robert Drehmel 4 * All rights reserved. 5 * 6 * As long as the above copyright statement and this notice remain 7 * unchanged, you can do what ever you want with this file. 8 * 9 * $FreeBSD$ 10 */ 11 #include <sys/cdefs.h> 12 __FBSDID("$FreeBSD$"); 13 14 #define _SEARCH_PRIVATE 15 #include <search.h> 16 #ifdef DEBUG 17 #include <stdio.h> 18 #else 19 #include <stdlib.h> /* for NULL */ 20 #endif 21 22 void insque(void *element, void *pred) 23 { 24 struct que_elem *prev, *next, *elem; 25 26 elem = (struct que_elem *)element; 27 prev = (struct que_elem *)pred; 28 29 if (prev == NULL) { 30 elem->prev = elem->next = NULL; 31 return; 32 } 33 34 next = prev->next; 35 if (next != NULL) { 36 #ifdef DEBUG 37 if (next->prev != prev) { 38 fprintf(stderr, "insque: Inconsistency detected:" 39 " next(%p)->prev(%p) != prev(%p)\n", 40 next, next->prev, prev); 41 } 42 #endif 43 next->prev = elem; 44 } 45 prev->next = elem; 46 elem->prev = prev; 47 elem->next = next; 48 } 49