mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-29 15:43:59 +08:00
io_uring: introduce llist helpers
Introduce helpers to atomically switch llist. Will later move this into common code Signed-off-by: Dylan Yudaken <dylany@fb.com> Link: https://lore.kernel.org/r/20220622134028.2013417-5-dylany@fb.com Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
parent
f88262e60b
commit
923d159247
@ -1009,6 +1009,36 @@ static void handle_tw_list(struct llist_node *node,
|
||||
} while (node);
|
||||
}
|
||||
|
||||
/**
|
||||
* io_llist_xchg - swap all entries in a lock-less list
|
||||
* @head: the head of lock-less list to delete all entries
|
||||
* @new: new entry as the head of the list
|
||||
*
|
||||
* If list is empty, return NULL, otherwise, return the pointer to the first entry.
|
||||
* The order of entries returned is from the newest to the oldest added one.
|
||||
*/
|
||||
static inline struct llist_node *io_llist_xchg(struct llist_head *head,
|
||||
struct llist_node *new)
|
||||
{
|
||||
return xchg(&head->first, new);
|
||||
}
|
||||
|
||||
/**
|
||||
* io_llist_cmpxchg - possibly swap all entries in a lock-less list
|
||||
* @head: the head of lock-less list to delete all entries
|
||||
* @old: expected old value of the first entry of the list
|
||||
* @new: new entry as the head of the list
|
||||
*
|
||||
* perform a cmpxchg on the first entry of the list.
|
||||
*/
|
||||
|
||||
static inline struct llist_node *io_llist_cmpxchg(struct llist_head *head,
|
||||
struct llist_node *old,
|
||||
struct llist_node *new)
|
||||
{
|
||||
return cmpxchg(&head->first, old, new);
|
||||
}
|
||||
|
||||
void tctx_task_work(struct callback_head *cb)
|
||||
{
|
||||
bool uring_locked = false;
|
||||
|
Loading…
Reference in New Issue
Block a user