Dear gawd, I've gone blind.
How's this look?
Cheers,
Bill
struct slist
{
	struct slist *next;
};
static inline void slist_add(struct slist *head, struct slist *elem)
{
	elem->next = head->next;
	head->next = elem;
}
#define slist_push(head, elem)	slist_add(head, elem)
static inline struct slist *slist_pop(struct slist *head)
{
	struct slist *elem = head->next;
	if (elem) {
		head->next = elem->next;
		elem->next = NULL;
	}
	return elem;
}
static inline int slist_remove(struct slist *head, struct slist *elem)
{
	struct slist *curr, *prev;
	for (prev = head, curr = head->next; curr; prev = curr, curr = curr->next)
		if (curr == head) {
			prev->next = curr->next;
			curr->next = NULL;
			return 1;
		}
	return 0;
}
-
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/