static void deferred_latency_tracker_put_event(struct rcu_head *head) { struct latency_tracker *tracker; struct latency_tracker_event *s = container_of(head, struct latency_tracker_event, urcuhead); tracker = s->tracker; wrapper_freelist_put_event(tracker, s); }
static void tracker_call_rcu_workqueue(struct work_struct *work) { struct latency_tracker *tracker; struct llist_node *list; struct latency_tracker_event *e, *n; tracker = container_of(work, struct latency_tracker, tracker_call_rcu_w.work); list = llist_del_all(&tracker->to_release); synchronize_sched(); llist_for_each_entry_safe(e, n, list, llist) wrapper_freelist_put_event(tracker, e); }