On Tue, 17 Apr 2007 15:18:56 +0400 Pavel Emelianov wrote: > There are many places in the kernel where the construction like > > foo = list_entry(head->next, struct foo_struct, list); > > are used. > The code might look more descriptive and neat if using the macro > > list_first_entry(head, type, member) \ > list_entry((head)->next, type, member) > > Here is the macro itself and the examples of its usage in the > generic code. If it will turn out to be useful, I can prepare > the set of patches to inject in into arch-specific code, drivers, > networking, etc. > > Signed-off-by: Pavel Emelianov <[EMAIL PROTECTED]> > Signed-off-by: Kirill Korotaev <[EMAIL PROTECTED]> > > --- > diff --git a/include/linux/list.h b/include/linux/list.h > index fd59659..71318fc 100644 > --- a/include/linux/list.h > +++ b/include/linux/list.h > @@ -425,6 +425,9 @@ static inline void list_splice_init_rcu( > #define list_entry(ptr, type, member) \ > container_of(ptr, type, member) > > +#define list_first_entry(ptr, type, member) \ > + list_entry((ptr)->next, type, member) > +
Please provide kernel-doc for that like the rest of list.h has. > /** > * list_for_each - iterate over a list > * @pos: the &struct list_head to use as a loop cursor. --- ~Randy *** Remember to use Documentation/SubmitChecklist when testing your code *** _______________________________________________ Devel mailing list Devel@openvz.org https://openvz.org/mailman/listinfo/devel