list: Introduce list_rotate_left()
authorFrederic Weisbecker <fweisbec@gmail.com>
Sat, 9 Jan 2010 19:53:14 +0000 (20:53 +0100)
committerFrederic Weisbecker <fweisbec@gmail.com>
Sat, 16 Jan 2010 11:29:32 +0000 (12:29 +0100)
Bring a new list_rotate_left() helper that rotates a list to
the left. This is useful for codes that need to round roubin
elements which queue priority increases from tail to head.

Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
Acked-by: Peter Zijlstra <peterz@infradead.org>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Arnaldo Carvalho de Melo <acme@infradead.org>
include/linux/list.h

index 969f6e92d0895a93b593829159bdef20220b0dcb..5d9c6558e8abf44d19326170e834aaac079581e0 100644 (file)
@@ -205,6 +205,20 @@ static inline int list_empty_careful(const struct list_head *head)
        return (next == head) && (next == head->prev);
 }
 
+/**
+ * list_rotate_left - rotate the list to the left
+ * @head: the head of the list
+ */
+static inline void list_rotate_left(struct list_head *head)
+{
+       struct list_head *first;
+
+       if (!list_empty(head)) {
+               first = head->next;
+               list_move_tail(first, head);
+       }
+}
+
 /**
  * list_is_singular - tests whether a list has just one entry.
  * @head: the list to test.