Lines Matching refs:data

69 	struct percpu_ref_data *data;
76 data = kzalloc(sizeof(*ref->data), gfp);
77 if (!data) {
83 data->force_atomic = flags & PERCPU_REF_INIT_ATOMIC;
84 data->allow_reinit = flags & PERCPU_REF_ALLOW_REINIT;
88 data->allow_reinit = true;
98 atomic_long_set(&data->count, start_count);
100 data->release = release;
101 data->confirm_switch = NULL;
102 data->ref = ref;
103 ref->data = data;
114 WARN_ON_ONCE(ref->data && ref->data->confirm_switch);
132 struct percpu_ref_data *data = ref->data;
137 if (!data)
141 ref->percpu_count_ptr |= atomic_long_read(&ref->data->count) <<
143 ref->data = NULL;
146 kfree(data);
152 struct percpu_ref_data *data = container_of(rcu,
154 struct percpu_ref *ref = data->ref;
156 data->confirm_switch(ref);
157 data->confirm_switch = NULL;
160 if (!data->allow_reinit)
169 struct percpu_ref_data *data = container_of(rcu,
171 struct percpu_ref *ref = data->ref;
181 atomic_long_read(&data->count), count);
195 atomic_long_add((long)count - PERCPU_COUNT_BIAS, &data->count);
197 if (WARN_ONCE(atomic_long_read(&data->count) <= 0,
199 data->release, atomic_long_read(&data->count)) &&
202 mem_dump_obj(data);
229 ref->data->confirm_switch = confirm_switch ?:
233 call_rcu_hurry(&ref->data->rcu,
247 if (WARN_ON_ONCE(!ref->data->allow_reinit))
250 atomic_long_add(PERCPU_COUNT_BIAS, &ref->data->count);
268 struct percpu_ref_data *data = ref->data;
277 wait_event_lock_irq(percpu_ref_switch_waitq, !data->confirm_switch,
280 if (data->force_atomic || percpu_ref_is_dying(ref))
313 ref->data->force_atomic = true;
331 wait_event(percpu_ref_switch_waitq, !ref->data->confirm_switch);
359 ref->data->force_atomic = false;
392 ref->data->release);
420 if (ref->data)
421 count = atomic_long_read(&ref->data->count);