Commit 476c5818 authored by Peter Zijlstra's avatar Peter Zijlstra Committed by Ingo Molnar
Browse files

llist: Add nonatomic __llist_add() and __llist_dell_all()

parent bcb53209
Loading
Loading
Loading
Loading
+0 −6
Original line number Diff line number Diff line
@@ -357,12 +357,6 @@ void i915_request_retire_upto(struct i915_request *rq)
	} while (i915_request_retire(tmp) && tmp != rq);
}

static void __llist_add(struct llist_node *node, struct llist_head *head)
{
	node->next = head->first;
	head->first = node;
}

static struct i915_request * const *
__engine_active(struct intel_engine_cs *engine)
{
+23 −0
Original line number Diff line number Diff line
@@ -197,6 +197,16 @@ static inline struct llist_node *llist_next(struct llist_node *node)
extern bool llist_add_batch(struct llist_node *new_first,
			    struct llist_node *new_last,
			    struct llist_head *head);

static inline bool __llist_add_batch(struct llist_node *new_first,
				     struct llist_node *new_last,
				     struct llist_head *head)
{
	new_last->next = head->first;
	head->first = new_first;
	return new_last->next == NULL;
}

/**
 * llist_add - add a new entry
 * @new:	new entry to be added
@@ -209,6 +219,11 @@ static inline bool llist_add(struct llist_node *new, struct llist_head *head)
	return llist_add_batch(new, new, head);
}

static inline bool __llist_add(struct llist_node *new, struct llist_head *head)
{
	return __llist_add_batch(new, new, head);
}

/**
 * llist_del_all - delete all entries from lock-less list
 * @head:	the head of lock-less list to delete all entries
@@ -222,6 +237,14 @@ static inline struct llist_node *llist_del_all(struct llist_head *head)
	return xchg(&head->first, NULL);
}

static inline struct llist_node *__llist_del_all(struct llist_head *head)
{
	struct llist_node *first = head->first;

	head->first = NULL;
	return first;
}

extern struct llist_node *llist_del_first(struct llist_head *head);

struct llist_node *llist_reverse_order(struct llist_node *head);