On Wed, 30 Oct 2019 at 13:18, Yann Ylavic <ylavic....@gmail.com> wrote:
>
> On Wed, Oct 30, 2019 at 4:37 AM William A Rowe Jr <wr...@rowe-clan.net> wrote:
> >
> > On Wed, Oct 16, 2019 at 5:11 AM <i...@apache.org> wrote:
> >>
> >> Author: ivan
> >> Date: Wed Oct 16 10:10:59 2019
> >> New Revision: 1868502
> >>
> >> URL: http://svn.apache.org/viewvc?rev=1868502&view=rev
> >> Log:
> >> * atomic/win32/apr_atomic64.c
> >>   (apr_atomic_read64): Use direct memory read when compiled for x86_x64, 
> >> since
> >>    64-bit reads are atomic in 64-bit Windows [1].
> >>
> >> +    /* 
> >> https://docs.microsoft.com/en-us/windows/win32/sync/interlocked-variable-access
> >> +     * "Simple reads and writes to properly aligned 64-bit variables are 
> >> atomic
> >> +     * on 64-bit Windows."*/
> >> +    return *mem;
> >
> > Where are we[1] ensuring *mem is aligned on an 8 byte boundary?
>
> Since mem is apr_uint64_t, unless the caller is playing nasty casts we
> should be good, I think.
+1.

Also InterlockedCompareExchange64() as all other interlocked function
requires aligned data [1]. So APR already assumes that data is
properly aligned.

[1] 
https://docs.microsoft.com/en-us/windows/win32/api/winnt/nf-winnt-interlockedcompareexchange64

-- 
Ivan Zhakov

Reply via email to