Messages in this thread | | | Subject | Re: [PATCH] add safe version of list_for_each_entry() to list.h | From | "Mark Peloquin" <> | Date | Fri, 4 Oct 2002 10:48:33 -0500 |
| |
On 10/04/2002 at 10:05 AM, Matthew Wilcox wrote: > Your list_member macro:
> +static inline int list_member(struct list_head *member) > +{ > + return ((!member->next || !member->prev) ? 0 : 1); > +}
> seems wrong to me. A list head which has been removed from its list using > list_del() still points to its old prev & next entries. If removed using > list_del_init(), those pointers are reinitialised to point at itself. > ie you only need list_empty(). Are you abusing list.h somehow?
list_empty() can be used on check list heads *or* to check if a list element is currently in a list, assuming the coder uses list_del_init(). However, if the coder chooses to use list_del() [which sets the prev and next fields to 0] instead, there is no corresponding function to indicate if that element is currently on a list. This function does that.
Mark
- 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/
| |