Re: [HACKERS] Status of 64 bit atomics

2016-05-27 Thread Andres Freund
Hi,

On 2016-05-27 11:00:42 -0400, John Gorman wrote:
> Someone recently told me that the postgresql atomics library was incomplete
> for 64 bit operations such as pg_atomic_fetch_add_u64() and should not be
> used.

There's currently no fallback for 32bit platforms without 64bit atomics
support.  I posted a patch adding that fallback, which I plan to commit
soon after the start of the 9.7 development window opens.


> Can someone definitively confirm whether it is okay to rely on the 64
> bit atomics or whether it is better to protect 64 bit operations with
> a spinlock?

For current versions 64bit atomics are working, but you'll get
compilation errors if the platform doesn't have 64bit atomics
support. That's not actually many CPUs these days; most prominent are
probably older arm CPUs.

Andres


-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] Status of 64 bit atomics

2016-05-27 Thread Arthur Silva
On May 27, 2016 5:01 PM, "John Gorman"  wrote:
>
> Hi All
>
> Someone recently told me that the postgresql atomics library was
incomplete
> for 64 bit operations such as pg_atomic_fetch_add_u64() and should not be
used.
>
> Can someone definitively confirm whether it is okay to rely on the 64 bit
atomics
> or whether it is better to protect 64 bit operations with a spinlock?
>
> Thanks!
> John

Golang has asm implementations for these even on 32bit platforms (see
https://github.com/golang/go/tree/master/src/sync/atomic).

Couldn't we borrow them? Or even better, fall back to spin lock on these,
but transparently.