| Date | Tue, 14 May 2013 15:15:13 -0700 | From | Tejun Heo <> | Subject | Re: [PATCH 04/21] Generic percpu refcounting |
| |
Hello, again, continuing the brain diarrehea,
On Tue, May 14, 2013 at 02:59:45PM -0700, Tejun Heo wrote: > So, while I do like the simplicity of put() returning %true on the > final put, I suspect it's more likely to slowing down fast paths due > to its interface compared to having separate ->release function > combined with void put(). Any ideas?
Maybe we can structure put in a way that's difficult to get wrong for the compiler?
bool put() { preempt_disable(); if (likely(not killed yet)) { this_cpu_dec(); preempt_enable(); return false; } return put_slowpath(); }
This doesn't solve the caller not inlining hot path but well I suppose we can consider that the caller's problem. The above at least wouldn't introduce an unnecessary branch on its own.
Thanks.
-- tejun
|