Re: svn commit: r1841078 - in /apr/apr/trunk: CHANGES apr.dsp atomic/unix/builtins64.c atomic/unix/mutex64.c atomic/win32/apr_atomic64.c include/apr_atomic.h include/arch/unix/apr_arch_atomic.h test/t

2018-09-18 Thread Jim Jagielski
Moved from httpd dev (which was moved to BCC)

> On Sep 17, 2018, at 2:54 PM, Yann Ylavic  wrote:
> 
> On Mon, Sep 17, 2018 at 5:52 PM Jim Jagielski  wrote:
>> 
>> Would like to also propose for apr-1.7...
> 
> How about 128bit? :p
> 
> There are __int128 (gcc) and _m128 (MSVC) and most 64bit intel/amd
> CPUs support cmpxchg16b.

The ‘__atomic’ builtins can be used with any integral scalar or pointer type 
that is 1, 2, 4, or 8 bytes in length. 16-byte integral types are also allowed 
if ‘__int128’ (see __int128 
) 
is supported by the architecture.

This also implies that APR create a 128bit Int type, which we don't (yet).

Bumping to support 64bit was easy and logical.. bumping to 128 requires more 
legwork and is a bit more "intrusive" ;)

+1 to the theory though.

Re: svn commit: r1841078 - in /apr/apr/trunk: CHANGES apr.dsp atomic/unix/builtins64.c atomic/unix/mutex64.c atomic/win32/apr_atomic64.c include/apr_atomic.h include/arch/unix/apr_arch_atomic.h test/t

2018-09-18 Thread Graham Leggett
On 17 Sep 2018, at 20:54, Yann Ylavic  wrote:

> How about 128bit? :p
> 
> There are __int128 (gcc) and _m128 (MSVC) and most 64bit intel/amd
> CPUs support cmpxchg16b.
> Intrinsics work on gcc, and (eg.) _InterlockedCompareExchange128 on Windows.
> 
> This can be very useful to avoid the ABA problem when doing atomics
> with 64bit pointers.
> For instance, MPM event could benefit from that (see PR 62141)...

While we’re here we should do this, +1.

Regards,
Graham
—



Re: svn commit: r1841078 - in /apr/apr/trunk: CHANGES apr.dsp atomic/unix/builtins64.c atomic/unix/mutex64.c atomic/win32/apr_atomic64.c include/apr_atomic.h include/arch/unix/apr_arch_atomic.h test/t

2018-09-17 Thread Yann Ylavic
On Mon, Sep 17, 2018 at 5:52 PM Jim Jagielski  wrote:
>
> Would like to also propose for apr-1.7...

How about 128bit? :p

There are __int128 (gcc) and _m128 (MSVC) and most 64bit intel/amd
CPUs support cmpxchg16b.
Intrinsics work on gcc, and (eg.) _InterlockedCompareExchange128 on Windows.

This can be very useful to avoid the ABA problem when doing atomics
with 64bit pointers.
For instance, MPM event could benefit from that (see PR 62141)...


Re: svn commit: r1841078 - in /apr/apr/trunk: CHANGES apr.dsp atomic/unix/builtins64.c atomic/unix/mutex64.c atomic/win32/apr_atomic64.c include/apr_atomic.h include/arch/unix/apr_arch_atomic.h test/t

2018-09-17 Thread William A Rowe Jr
On Mon, Sep 17, 2018 at 10:52 AM Jim Jagielski  wrote:

> Would like to also propose for apr-1.7...
>
> *Subject: **svn commit: r1841078 - in /apr/apr/trunk: CHANGES apr.dsp
> atomic/unix/builtins64.c atomic/unix/mutex64.c atomic/win32/apr_atomic64.c
> include/apr_atomic.h include/arch/unix/apr_arch_atomic.h test/testatomic.c*
>
>
+1.