return ACCESS_ONCE(head->first) == NULL;
}
+static inline struct llist_node *llist_next(struct llist_node *node)
+{
+ return node->next;
+}
+
/**
* llist_add - add a new entry
* @new: new entry to be added
entry = cmpxchg(&head->first, old_entry, new);
if (entry == old_entry)
break;
- cpu_relax();
}
return old_entry == NULL;
{
return xchg(&head->first, NULL);
}
+
+extern bool llist_add_batch(struct llist_node *new_first,
+ struct llist_node *new_last,
+ struct llist_head *head);
+extern struct llist_node *llist_del_first(struct llist_head *head);
+
#endif /* LLIST_H */