maria-discuss team mailing list archive
-
maria-discuss team
-
Mailing list archive
-
Message #00220
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