MINOR: lists: add new macro LIST_SPLICE_END_DETACHED

This macro adds a detached list at the end of an existing
list. The detached list is a list without head, containing
only elements.
diff --git a/include/common/mini-clist.h b/include/common/mini-clist.h
index 9e1033e..9a81c9d 100644
--- a/include/common/mini-clist.h
+++ b/include/common/mini-clist.h
@@ -104,6 +104,19 @@
 		}						     \
 	} while (0)
 
+/* adds the contents of a list whose first element is <old> and last one is
+ * <old->prev> at the end of another list <new>. The old list DOES NOT have
+ * any head here.
+ */
+#define LIST_SPLICE_END_DETACHED(new, old) do {              \
+		typeof(new) __t;                             \
+		(new)->p->n = (old);                         \
+		(old)->p->n = (new);                         \
+		__t = (old)->p;                              \
+		(old)->p = (new)->p;                         \
+		(new)->p = __t;                              \
+	} while (0)
+
 /* removes an element from a list and returns it */
 #define LIST_DEL(el) ({ typeof(el) __ret = (el); (el)->n->p = (el)->p; (el)->p->n = (el)->n; (__ret); })