lkml.org 
[lkml]   [2013]   [Jun]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH 0/2] introduce list_for_each_entry_del
On Mon, 3 June 2013 13:49:30 -0700, Christoph Hellwig wrote:
>
> I can't say I like the structure.
>
> A list_pop that removes and entry from the head or returns NULL if the
> list is empty would lead to nice while loops that are obviously
> readable instead.

Something like this?

#define list_pop(head) \
({ struct list_head *____pos; \
list_empty(head) ? NULL : (____pos = (head)->next, \
list_del(____pos), ____pos) \
})

#define list_pop_entry(head, type, member) \
({ struct list_head *____pos; \
list_empty(head) ? NULL : (____pos = (head)->next, \
list_del(____pos), list_entry(____pos, type, member) \
})

Would be fine with me as well.

Jörn

--
Beware of bugs in the above code; I have only proved it correct, but
not tried it.
-- Donald Knuth
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2013-06-04 00:01    [W:0.225 / U:0.084 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site