[vlc-devel] [PATCH] core: Add atomic refcounter helper

Romain Vimont rom1v at videolabs.io
Sun Jul 1 21:10:20 CEST 2018


On Sun, Jul 01, 2018 at 09:48:03PM +0300, Rémi Denis-Courmont wrote:
> Le sunnuntaina 1. heinäkuuta 2018, 20.56.03 EEST Romain Vimont a écrit :
> > On Sun, Jul 01, 2018 at 08:10:54PM +0300, Rémi Denis-Courmont wrote:
> > > Le sunnuntaina 1. heinäkuuta 2018, 12.30.33 EEST Romain Vimont a écrit :
> > > > On Sun, Jul 01, 2018 at 11:59:08AM +0300, Rémi Denis-Courmont wrote:
> > > > > Furthermore the boolean evaluation of the return value is the opposite
> > > > > of
> > > > > what any other ref counting API does (other than VLC's). Usually, zero
> > > > > is
> > > > > for last reference and non-zero for non-last references. Again, this
> > > > > is
> > > > > prone to errors.
> > > > 
> > > > https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/
> > > > lib/ refcount.c?h=v4.17#n208
> > > 
> > > This is very new.
> > 
> > In 2009, there were already atomic_dec_and_test(), with the same
> > behavior:
> > <https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/inc
> > lude/asm-generic/atomic.h?h=v2.6.31#n123>
> 
> So what?

So Linux have, at least since 2009, a function very similar to the
vlc_atomic_rc_dec() I propose, with the same behavior, and used in the
very same way. Here are random examples in 2009 (there are many others):
<https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/include/net/ax25.h?h=v2.6.31#n171>
<https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/include/net/netlabel.h?h=v2.6.31#n252>

This contrasts with:

> the boolean evaluation of the return value is the opposite of what
> any other ref counting API does (other than VLC's). Usually, zero is
> for last reference and non-zero for non-last references.

and:

> This is very new.


More information about the vlc-devel mailing list