Messages in this thread | | | Date | Fri, 14 Mar 2008 18:22:26 -0400 | From | Masami Hiramatsu <> | Subject | Re: [PATCH -mm 1/5] list.h: add list_singleton |
| |
Andrew Morton wrote: > If your usage pattern is: > > struct foo { > ... > struct list_head bar_list; /* A list of `struct bar's */ > }; > > struct bar { > struct list_head list; /* Attached to foo.bar_list */ > ... > }; > > then yes, list_singleton() makes sense. > > But in other usage patterns it does not: > > struct foo { > struct bar *bar_list; > ... > }; > > struct bar { > struct list_head list; /* All the other bars go here */ > ... > }; > > In the second case, emptiness is signified by foo.bar_list==NULL. And in > this case, code which does > > if (foo->bar_list && list_singleton(&foo->bar_list->list)) > > will fail if there is a single item on the list! > > The second usage pattern is uncommon and list_empty() also returns > misleading answers when list_heads are used this way.
I agreed. I assume that list_singleton() is used like as list_empty().
> So I guess we can proceed with your list_singleton(), but I'd just like to > flag this possible confusion, see what people think..
Thank you,
-- Masami Hiramatsu
Software Engineer Hitachi Computer Products (America) Inc. Software Solutions Division
e-mail: mhiramat@redhat.com
| |