On Wed, 2017-03-22 at 13:25 +0100, Peter Zijlstra wrote:
On Tue, Mar 21, 2017 at 07:03:19PM -0700, Eric Dumazet wrote:
quoted
Note that we might define two refcount_inc() : One that does whole
tests, and refcount_inc_relaxed() that might translate to atomic_inc()
on non debug kernels.
So you'd want a duplicate interface, such that most code, which doesn't
care about refcount performance much, can still have all the tests
enabled.
But the code that cares about it (and preferably can prove it with
numbers) can use the other.
I'm also somewhat hesitant to use _relaxed for this distinction, as it
has a clear meaning in atomics, maybe _nocheck?
Also; what operations do you want _nocheck variants of, only
refcount_inc() ?
I was mostly thinking of points where we were already checking the value
either before or after the atomic_inc(), using some lazy check (a la
WARN_ON(atomic_read(p) == 0) or something like that.
But admittedly we can replace all these by standard refcount_inc() and
simply provide a CONFIG option to turn off the checks, and let brave
people enable this option.