| Date | Tue, 14 May 2013 17:28:36 +0200 | From | Oleg Nesterov <> | Subject | Re: [PATCH 04/21] Generic percpu refcounting |
| |
On 05/14, Tejun Heo wrote: > > > +int percpu_ref_tryget(struct percpu_ref *ref) > > +{ > > + int ret = 1; > > + > > + preempt_disable(); > > + > > + if (!percpu_ref_dead(ref)) > > + percpu_ref_get(ref); > > + else > > + ret = 0; > > + > > + preempt_enable(); > > + > > + return ret; > > +} ... > BTW, why is this > function necessary? What's the use case?
Yes, I was wondering too.
And please note that this code _looks_ wrong, percpu_ref_get() still can increment ref->count.
Hmm. Just noticed this comment above percpu_ref_kill()
* The caller must issue a synchronize_rcu()/call_rcu() before calling * percpu_ref_put() to drop the initial ref.
Really?
Oleg.
|