25 static char *
t =
"TRUE";
26 static char *
f =
"FALSE";
45 SDL_Log(
"\nspin lock---------------------------------------\n\n");
48 SDL_Log(
"AtomicLock lock=%d\n", lock);
50 SDL_Log(
"AtomicUnlock lock=%d\n", lock);
52 SDL_Log(
"\natomic -----------------------------------------\n\n");
99 #define VALBITS (sizeof(atomicValue)*8)
101 #define atomicValue int
102 #define CountTo ((atomicValue)((unsigned int)(1<<(VALBITS-1))-1))
103 #define NInter (CountTo/CountInc/NThreads)
104 #define Expect (CountTo-NInter*CountInc*NThreads)
107 CountTo_GreaterThanZero =
CountTo > 0,
155 SDL_Log(
"Finished in %f sec\n", (end - start) / 1000.
f);
164 SDL_Log(
"\nepic test---------------------------------------\n\n");
166 SDL_Log(
"Size asserted to be >= 32-bit\n");
169 SDL_Log(
"Check static initializer\n");
175 SDL_Log(
"Test negative values\n");
180 SDL_Log(
"Verify maximum value\n");
185 SDL_Log(
"Test compare and exchange\n");
209 SDL_Log(
"Test Add (Negative values)\n");
226 SDL_Log(
"Reset before count down test\n");
252 #define TEST_SPINLOCK_FIFO
254 #define NUM_READERS 4
255 #define NUM_WRITERS 4
256 #define EVENTS_PER_WRITER 1000000
259 #define MAX_ENTRIES 256
260 #define WRAP_MASK (MAX_ENTRIES-1)
282 #ifdef TEST_SPINLOCK_FIFO
306 #ifdef TEST_SPINLOCK_FIFO
322 #ifdef TEST_SPINLOCK_FIFO
335 delta = (int)(entry_seq - queue_pos);
345 }
else if (delta < 0) {
355 #ifdef TEST_SPINLOCK_FIFO
369 #ifdef TEST_SPINLOCK_FIFO
382 delta = (int)(entry_seq - (queue_pos + 1));
387 *
event = entry->
event;
392 }
else if (delta < 0) {
402 #ifdef TEST_SPINLOCK_FIFO
422 delta = (int)(entry_seq - queue_pos);
430 }
else if (delta < 0) {
433 SDL_Log(
"ERROR: mutex failed!\n");
455 delta = (int)(entry_seq - (queue_pos + 1));
460 *
event = entry->
event;
463 }
else if (delta < 0) {
466 SDL_Log(
"ERROR: mutex failed!\n");
506 event.user.windowID = 0;
508 event.user.data1 =
data;
509 event.user.data2 =
NULL;
571 #ifdef TEST_SPINLOCK_FIFO
602 char textBuffer[1024];
605 SDL_Log(
"\nFIFO test---------------------------------------\n\n");
606 SDL_Log(
"Mode: %s\n", lock_free ?
"LockFree" :
"Mutex");
620 #ifdef TEST_SPINLOCK_FIFO
634 readerData[
i].
queue = &queue;
646 writerData[
i].
queue = &queue;
674 SDL_Log(
"Finished in %f sec\n", (end - start) / 1000.
f);
690 grand_total += total;
691 SDL_Log(
"Reader %d read %d events, had %d waits\n", i, total, readerData[i].waits);
696 SDL_snprintf(textBuffer + len,
sizeof(textBuffer) - len,
", ");
702 SDL_snprintf(textBuffer + len,
sizeof(textBuffer) - len,
" }\n");
705 SDL_Log(
"Readers read %d total events\n", grand_total);