embox
1/**
2* @file
3* @brief Paranoia checks of doubly-linked lists
4*
5* @date 05.12.2013
6* @author Eldar Abusalimov
7*/
8#include <inttypes.h>9#include <assert.h>10
11#include <lib/libds/dlist.h>12
13#if DLIST_DEBUG_VERSION14void __dlist_debug_check(const struct dlist_head *head) {15#ifndef NDEBUG16const struct dlist_head *p = head->prev;17const struct dlist_head *n = head->next;18uintptr_t poison = head->poison;19
20assertf(((!poison || (void *) ~poison == head) &&21n->prev == head &&22p->next == head),23"\n"24"head: %p, poison: %p, ~poison: %p,\n"25"n: %p, n->prev: %p,\n"26"p: %p, p->next: %p\n",27head, (void *)poison, (void *) ~poison,28n, n->prev,29p, p->next);30#endif31}
32#endif33