summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/lists.c9
-rw-r--r--lib/lists.h1
2 files changed, 10 insertions, 0 deletions
diff --git a/lib/lists.c b/lib/lists.c
index 200576cf..fe2b692b 100644
--- a/lib/lists.c
+++ b/lib/lists.c
@@ -109,6 +109,15 @@ add_head(list *l, node *n)
l->head = n;
}
+LIST_INLINE void
+self_link(node *n)
+{
+ ASSUME(n->prev == NULL);
+ ASSUME(n->next == NULL);
+
+ n->prev = n->next = n;
+}
+
/**
* insert_node - insert a node to a list
* @n: a new list node
diff --git a/lib/lists.h b/lib/lists.h
index 479f4ed1..64b4a981 100644
--- a/lib/lists.h
+++ b/lib/lists.h
@@ -78,6 +78,7 @@ typedef union list { /* In fact two overlayed nodes */
#define LIST_INLINE
void add_tail(list *, node *);
void add_head(list *, node *);
+void self_link(node *);
void rem_node(node *);
void add_tail_list(list *, list *);
void init_list(list *);