linux-wireless.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 2/4] list.h: add list_cut_position()
@ 2008-08-04 22:48 Luis R. Rodriguez
  2008-08-04 23:00 ` Randy Dunlap
  0 siblings, 1 reply; 9+ messages in thread
From: Luis R. Rodriguez @ 2008-08-04 22:48 UTC (permalink / raw)
  To: linville, netdev, linux-kernel, linville, torvalds
  Cc: Luis R. Rodriguez, linux-wireless, ath9k-devel

This adds list_cut_position() which lets you cut a list into
two lists given a pivot in the list.

Signed-off-by: Luis R. Rodriguez <lrodriguez@atheros.com>
---
 include/linux/list.h |   32 ++++++++++++++++++++++++++++++++
 1 files changed, 32 insertions(+), 0 deletions(-)

diff --git a/include/linux/list.h b/include/linux/list.h
index 594f67c..2999b0f 100644
--- a/include/linux/list.h
+++ b/include/linux/list.h
@@ -214,6 +214,38 @@ static inline int list_is_singular(const struct list_head *head)
 	return !list_empty(head) && (head->next == head->prev);
 }
 
+static inline void __list_cut_position(struct list_head *list,
+		struct list_head *head, struct list_head *entry)
+{
+	struct list_head *new_first =
+		(entry->next != head) ? entry->next : head;
+	list->next = head->next;
+	list->next->prev = list;
+	list->prev = entry;
+	entry->next = list;
+	head->next = new_first;
+	new_first->prev = head;
+}
+
+/**
+ * list_cut_position - cut a list into two
+ * @list: a new list to add all removed entries
+ * @head: a list with entries
+ * @entry: an entry within head, could be the head itself
+ *	and if so we won't won't cut the list
+ */
+static inline void list_cut_position(struct list_head *list,
+		struct list_head *head, struct list_head *entry)
+{
+	BUG_ON(list_empty(head));
+	if (list_is_singular(head))
+		BUG_ON(head->next != entry && head != entry);
+	if (entry == head)
+		INIT_LIST_HEAD(list);
+	else
+		__list_cut_position(list, head, entry);
+}
+
 static inline void __list_splice(const struct list_head *list,
 				 struct list_head *head)
 {
-- 
1.5.6.rc2.15.g457bb.dirty


^ permalink raw reply related	[flat|nested] 9+ messages in thread
* [PATCH 0/4] Atheros IEEE 802.11n ath9k driver
@ 2008-08-04  7:16 Luis R. Rodriguez
  2008-08-04  7:16 ` [PATCH 1/4] list.h: Add list_splice_tail() and list_splice_tail_init() Luis R. Rodriguez
  0 siblings, 1 reply; 9+ messages in thread
From: Luis R. Rodriguez @ 2008-08-04  7:16 UTC (permalink / raw)
  To: linville, linville; +Cc: Luis R. Rodriguez, linux-wireless, ath9k-devel

This series of patches adds the ath9k driver which adds support
for all Atheors IEEE 802.11n chipsets along some new linked list
helpers.

More information about this driver is available at:

http://wireless.kernel.org/en/users/Drivers/ath9k

Our mailing list for this driver is:

https://lists.ath9k.org/mailman/listinfo/ath9k-devel

  Luis

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2008-08-06 20:32 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-08-04 22:48 [PATCH 2/4] list.h: add list_cut_position() Luis R. Rodriguez
2008-08-04 23:00 ` Randy Dunlap
2008-08-04 23:13   ` Luis R. Rodriguez
2008-08-05  8:52     ` Jochen Voß
2008-08-06 18:27       ` Luis R. Rodriguez
2008-08-06 18:35         ` Randy Dunlap
     [not found]           ` <20080806184520.GK5605@tesla>
2008-08-06 20:28             ` Luis R. Rodriguez
2008-08-06 20:32               ` Luis R. Rodriguez
  -- strict thread matches above, loose matches on Subject: below --
2008-08-04  7:16 [PATCH 0/4] Atheros IEEE 802.11n ath9k driver Luis R. Rodriguez
2008-08-04  7:16 ` [PATCH 1/4] list.h: Add list_splice_tail() and list_splice_tail_init() Luis R. Rodriguez
2008-08-04  7:16   ` [PATCH 2/4] list.h: add list_cut_position() Luis R. Rodriguez

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).