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.


[HACKERS] Status of 64 bit atomics

2016-05-27 Thread John Gorman
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