apr-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Brian Pane <brian.p...@cnet.com>
Subject Re: [PATCH] fix apr_atomic.h for FreeBSD
Date Sun, 23 Mar 2003 22:31:38 GMT
On Sat, 2003-03-22 at 20:39, Craig Rodrigues wrote:

> -#define apr_atomic_set(mem, val)     atomic_set_int(mem, val)
> +#define apr_atomic_set(mem, val)     (*(mem) = val)

This part looks okay; we make the same assumption (that
a 32-bit aligned write is atomic) on many other platforms.

>  #define apr_atomic_read(mem)         (*mem)
> +
> +#define APR_OVERRIDE_ATOMIC_DEC 1
> +APR_INLINE int apr_atomic_dec(apr_atomic_t *mem)
> +{
> +    atomic_subtract_int(mem,1);
> +    return *mem;
> +}

As a couple of people have noted already, this one won't
really provide atomicity.

The only solutions I can think of at the moment are:

1) Fall back to the default mutex-based implementation
   for apr_atomic_dec on FreeBSD, or

2) Use inline assembly like we do for Linux, with a
   fallback to the mutex-based implementation for
   CPUs where we don't have an assembly version.

What do you think of option 2?

Brian



Mime
View raw message