← Back to team overview

maria-discuss team mailing list archive

Re: my_atomic_add64

 

I think the 80486 introduced the cmp8xchg instruction.


On 17 Aug, 2010, at 9:25 am, Kristian Nielsen wrote:

> Oleg Tsarev <zabivator@xxxxxxxxx> writes:
> 
>> I need my_atomic_add64 in mysql.
>> 
>> Can i simple add following macros, or i need more advanced tricks?
>> 
>> tsarev@main:/storage/project/percona/rtd_2$ diff -Nur
>> ../rtd/c/include/my_atomic.h c/include/my_atomic.h
>> --- ../rtd/c/include/my_atomic.h        2010-07-09 16:35:11.000000000 +0400
>> +++ c/include/my_atomic.h       2010-08-17 18:57:07.648819066 +0400
> 
> I think you'll also need
> 
>    make_transparent_unions(32)
>    #define U_32   int32
>    #define Uv_32  int32
> 
> 
>> @@ -96,25 +96,30 @@
>> make_atomic_cas( 8)
>> make_atomic_cas(16)
>> make_atomic_cas(32)
>> +make_atomic_cas(64)
>> make_atomic_cas(ptr)
> 
>> ...
> 
> My guess is it should work, at least on 64-bit platforms.
> 
> I'm not sure that 32-bit CPUs generally provide 64-bit atomic operations. If
> not (which seems likely, really), you'll need to come up with something to
> handle this case. Note that the my_atomic stuff has the possibility to
> fallback to mutex locking when support is not available, so one way might be
> to make it use this fallback on 32-bit (taking a performance penalty, but
> 32-bit is getting less and less interesting by the day anyway).
> 
> - Kristian.
> 
> _______________________________________________
> Mailing list: https://launchpad.net/~maria-discuss
> Post to     : maria-discuss@xxxxxxxxxxxxxxxxxxx
> Unsubscribe : https://launchpad.net/~maria-discuss
> More help   : https://help.launchpad.net/ListHelp




Follow ups

References