The new, cleaner, version of the atomic operations. The dummy code is what you should start working with to port atomic ops.
The linux code appears to be complete and *should* be the base of all Unix and GCC based versions. The macosx and win32 versions are currently just copies of the dummy code. I will begin working on the windows version as soon as this check in is done. I need someone to work on the Mac OS X version. I'm afraid that this check in will break QNX (Sorry!) --HG-- extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/trunk%403802
This commit is contained in:
parent
5ca4f68163
commit
11921a8b7d
6 changed files with 666 additions and 2758 deletions
|
@ -29,21 +29,18 @@ main(int argc, char **argv)
|
|||
volatile Uint64 val64 = 0;
|
||||
Uint64 ret64 = 0;
|
||||
|
||||
SDL_SpinLock lock = 0;
|
||||
|
||||
SDL_bool tfret = SDL_FALSE;
|
||||
|
||||
printf("32 bit -----------------------------------------\n\n");
|
||||
printf("\nspin lock---------------------------------------\n\n");
|
||||
|
||||
ret32 = SDL_AtomicExchange32(&val32, 10);
|
||||
printf("Exchange32 ret=%d val=%d\n", ret32, val32);
|
||||
ret32 = SDL_AtomicExchange32(&val32, 0);
|
||||
printf("Exchange32 ret=%d val=%d\n", ret32, val32);
|
||||
SDL_AtomicLock(&lock);
|
||||
printf("AtomicLock lock=%d\n", lock);
|
||||
SDL_AtomicUnlock(&lock);
|
||||
printf("AtomicUnlock lock=%d\n", lock);
|
||||
|
||||
val32 = 10;
|
||||
tfret = SDL_AtomicCompareThenSet32(&val32, 10, 20);
|
||||
printf("CompareThenSet32 tfret=%s val=%d\n", tf(tfret), val32);
|
||||
val32 = 10;
|
||||
tfret = SDL_AtomicCompareThenSet32(&val32, 0, 20);
|
||||
printf("CompareThenSet32 tfret=%s val=%d\n", tf(tfret), val32);
|
||||
printf("\n32 bit -----------------------------------------\n\n");
|
||||
|
||||
val32 = 0;
|
||||
tfret = SDL_AtomicTestThenSet32(&val32);
|
||||
|
@ -79,19 +76,7 @@ main(int argc, char **argv)
|
|||
printf("SubtractThenFetch32 ret=%d val=%d\n", ret32, val32);
|
||||
|
||||
#ifdef SDL_HAS_64BIT_TYPE
|
||||
printf("64 bit -----------------------------------------\n\n");
|
||||
|
||||
ret64 = SDL_AtomicExchange64(&val64, 10);
|
||||
printf("Exchange64 ret=%lld val=%lld\n", ret64, val64);
|
||||
ret64 = SDL_AtomicExchange64(&val64, 0);
|
||||
printf("Exchange64 ret=%lld val=%lld\n", ret64, val64);
|
||||
|
||||
val64 = 10;
|
||||
tfret = SDL_AtomicCompareThenSet64(&val64, 10, 20);
|
||||
printf("CompareThenSet64 tfret=%s val=%lld\n", tf(tfret), val64);
|
||||
val64 = 10;
|
||||
tfret = SDL_AtomicCompareThenSet64(&val64, 0, 20);
|
||||
printf("CompareThenSet64 tfret=%s val=%lld\n", tf(tfret), val64);
|
||||
printf("\n64 bit -----------------------------------------\n\n");
|
||||
|
||||
val64 = 0;
|
||||
tfret = SDL_AtomicTestThenSet64(&val64);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue