Index: kernel/generic/include/adt/list.h
===================================================================
--- kernel/generic/include/adt/list.h	(revision 4748038f97c797907031af64f60f00b8b40013ec)
+++ kernel/generic/include/adt/list.h	(revision 1f8c11fb8cdd200759b495ae526cf6d894d543f0)
@@ -258,4 +258,35 @@
 }
 
+/** Moves items of one list into another after the specified item.
+ * 
+ * Inserts all items of @a list after item at @a pos in another list. 
+ * Both lists may be empty. 
+ * 
+ * In order to insert the list at the beginning of another list, use:
+ * @code 
+ * list_splice(&list_dest.head, &list_src);
+ * @endcode
+ * 
+ * @param list Source list to move after pos.
+ * @param pos Source items will be placed after this item.
+ */
+NO_TRACE static inline void list_splice(list_t *list, link_t *pos)
+{
+	link_t *pos_next = pos->next;
+	
+	if (!list_empty(list)) {
+		link_t *first = list->head.next;
+		link_t *last = list->head.prev;
+
+		pos->next = first;
+		first->prev = pos;
+
+		last->next = pos_next;
+		pos_next->prev = last;
+		
+		list_initialize(list);
+	}
+}
+
 /** Get n-th item in a list.
  *
