Lines Matching refs:objs

71 	GENRADIX(struct rcu_head *)	objs;
93 DARRAY_PREALLOCATED(struct rcu_pending_seq, 4) objs;
105 if (p->objs.nr) in __rcu_pending_has_pending()
181 struct rcu_pending_seq objs = {}; in __process_finished_items() local
184 if (p->objs.nr && in __process_finished_items()
185 __poll_state_synchronize_rcu(pending->srcu, p->objs.data[0].seq)) { in __process_finished_items()
186 objs = p->objs.data[0]; in __process_finished_items()
187 darray_remove_item(&p->objs, p->objs.data); in __process_finished_items()
199 for (size_t i = 0; i < objs.nr; ) { in __process_finished_items()
200 size_t nr_this_node = min(GENRADIX_NODE_SIZE / sizeof(void *), objs.nr - i); in __process_finished_items()
202 kfree_bulk(nr_this_node, (void **) genradix_ptr(&objs.objs, i)); in __process_finished_items()
205 genradix_free(&objs.objs); in __process_finished_items()
232 for (size_t i = 0; i < objs.nr; i++) { in __process_finished_items()
233 struct rcu_head *obj = *genradix_ptr(&objs.objs, i); in __process_finished_items()
236 genradix_free(&objs.objs); in __process_finished_items()
250 for (size_t i = 0; i < objs.nr; i++) in __process_finished_items()
251 pending->process(pending, *genradix_ptr(&objs.objs, i)); in __process_finished_items()
252 genradix_free(&objs.objs); in __process_finished_items()
276 if ((p->objs.nr && __poll_state_synchronize_rcu(pending->srcu, p->objs.data[0].seq)) || in process_finished_items()
321 darray_for_each_reverse(p->objs, objs) in get_object_radix()
322 if (objs->seq == seq) in get_object_radix()
323 return objs; in get_object_radix()
325 if (darray_push_gfp(&p->objs, ((struct rcu_pending_seq) { .seq = seq }), GFP_ATOMIC)) in get_object_radix()
328 return &darray_last(p->objs); in get_object_radix()
409 struct rcu_pending_seq *objs; in __rcu_pending_enqueue() local
433 objs = get_object_radix(p, seq); in __rcu_pending_enqueue()
434 if (unlikely(!objs)) in __rcu_pending_enqueue()
437 if (unlikely(!objs->cursor)) { in __rcu_pending_enqueue()
444 objs->cursor = genradix_ptr_alloc_preallocated_inlined(&objs->objs, in __rcu_pending_enqueue()
445 objs->nr, &new_node, GFP_ATOMIC|__GFP_NOWARN); in __rcu_pending_enqueue()
446 if (unlikely(!objs->cursor)) { in __rcu_pending_enqueue()
465 *objs->cursor++ = ptr ?: head; in __rcu_pending_enqueue()
467 if (!(((ulong) objs->cursor) & (GENRADIX_NODE_SIZE - 1))) in __rcu_pending_enqueue()
468 objs->cursor = NULL; in __rcu_pending_enqueue()
469 start_gp = !objs->nr; in __rcu_pending_enqueue()
470 objs->nr++; in __rcu_pending_enqueue()
523 darray_for_each(p->objs, objs) in rcu_pending_pcpu_dequeue()
524 if (objs->nr) { in rcu_pending_pcpu_dequeue()
525 ret = *genradix_ptr(&objs->objs, --objs->nr); in rcu_pending_pcpu_dequeue()
526 objs->cursor = NULL; in rcu_pending_pcpu_dequeue()
527 if (!objs->nr) in rcu_pending_pcpu_dequeue()
528 genradix_free(&objs->objs); in rcu_pending_pcpu_dequeue()
613 WARN_ON(p->objs.nr); in rcu_pending_exit()
614 darray_exit(&p->objs); in rcu_pending_exit()
642 darray_init(&p->objs); in rcu_pending_init()