Lines Matching refs:head
46 b->head = NULL; in rcu_batch_init()
47 b->tail = &b->head; in rcu_batch_init()
53 static inline void rcu_batch_queue(struct rcu_batch *b, struct rcu_head *head) in rcu_batch_queue() argument
55 *b->tail = head; in rcu_batch_queue()
56 b->tail = &head->next; in rcu_batch_queue()
64 return b->tail == &b->head; in rcu_batch_empty()
73 struct rcu_head *head; in rcu_batch_dequeue() local
78 head = b->head; in rcu_batch_dequeue()
79 b->head = head->next; in rcu_batch_dequeue()
80 if (b->tail == &head->next) in rcu_batch_dequeue()
83 return head; in rcu_batch_dequeue()
93 *to->tail = from->head; in rcu_batch_move()
387 void call_srcu(struct srcu_struct *sp, struct rcu_head *head, in call_srcu() argument
392 head->next = NULL; in call_srcu()
393 head->func = func; in call_srcu()
395 rcu_batch_queue(&sp->batch_queue, head); in call_srcu()
413 struct rcu_head *head = &rcu.head; in __synchronize_srcu() local
425 head->next = NULL; in __synchronize_srcu()
426 head->func = wakeme_after_rcu; in __synchronize_srcu()
431 rcu_batch_queue(&sp->batch_check0, head); in __synchronize_srcu()
436 BUG_ON(sp->batch_done.head != head); in __synchronize_srcu()
443 rcu_batch_queue(&sp->batch_queue, head); in __synchronize_srcu()
621 struct rcu_head *head; in srcu_invoke_callbacks() local
624 head = rcu_batch_dequeue(&sp->batch_done); in srcu_invoke_callbacks()
625 if (!head) in srcu_invoke_callbacks()
628 head->func(head); in srcu_invoke_callbacks()