diff options
Diffstat (limited to 'src/test/test_spinlock.c')
-rw-r--r-- | src/test/test_spinlock.c | 160 |
1 files changed, 77 insertions, 83 deletions
diff --git a/src/test/test_spinlock.c b/src/test/test_spinlock.c index e6f7dfe52..878ee8bab 100644 --- a/src/test/test_spinlock.c +++ b/src/test/test_spinlock.c @@ -8,8 +8,8 @@ #include <stdio.h> #include <stdlib.h> -// -// Simple test for the spinlock implementation to see if it works properly.. +// +// Simple test for the spinlock implementation to see if it works properly.. // @@ -23,101 +23,95 @@ static SPIN_LOCK lock; static int val = 0; static volatile int32 done_threads = 0; -static void *worker(void *p) -{ - register int i; - - for (i = 0; i < PERINC; i++) { - EnterSpinLock(&lock); - EnterSpinLock(&lock); - - val++; - - LeaveSpinLock(&lock); - LeaveSpinLock(&lock); - } - - InterlockedIncrement(&done_threads); - - return NULL; +static void *worker(void *p){ + register int i; + + for(i = 0; i < PERINC; i++){ + EnterSpinLock(&lock); + EnterSpinLock(&lock); + + val++; + + LeaveSpinLock(&lock); + LeaveSpinLock(&lock); + } + + InterlockedIncrement(&done_threads); + + return NULL; }//end: worker() -int do_init(int argc, char **argv) -{ - rAthread t[THRC]; - int j, i; - int ok; - - ShowStatus("==========\n"); - ShowStatus("TEST: %u Runs, (%u Threads)\n", LOOPS, THRC); - ShowStatus("This can take a while\n"); - ShowStatus("\n\n"); - - ok =0; - for (j = 0; j < LOOPS; j++) { - val = 0; - done_threads = 0; - - InitializeSpinLock(&lock); - - - for (i =0; i < THRC; i++) { - t[i] = rathread_createEx(worker, NULL, 1024*512, RAT_PRIO_NORMAL); - } - - - while (1) { - if (InterlockedCompareExchange(&done_threads, THRC, THRC) == THRC) - break; - - rathread_yield(); - } - - FinalizeSpinLock(&lock); - - // Everything fine? - if (val != (THRC*PERINC)) { - printf("FAILED! (Result: %u, Expected: %u)\n", val, (THRC*PERINC)); - } else { - printf("OK! (Result: %u, Expected: %u)\n", val, (THRC*PERINC)); - ok++; - } - - } - - - if (ok != LOOPS) { - ShowFatalError("Test failed.\n"); - exit(1); - } else { - ShowStatus("Test passed.\n"); - exit(0); - } - - - return 0; +int do_init(int argc, char **argv){ + rAthread t[THRC]; + int j, i; + int ok; + + ShowStatus("==========\n"); + ShowStatus("TEST: %u Runs, (%u Threads)\n", LOOPS, THRC); + ShowStatus("This can take a while\n"); + ShowStatus("\n\n"); + + ok =0; + for(j = 0; j < LOOPS; j++){ + val = 0; + done_threads = 0; + + InitializeSpinLock(&lock); + + + for(i =0; i < THRC; i++){ + t[i] = rathread_createEx( worker, NULL, 1024*512, RAT_PRIO_NORMAL); + } + + + while(1){ + if(InterlockedCompareExchange(&done_threads, THRC, THRC) == THRC) + break; + + rathread_yield(); + } + + FinalizeSpinLock(&lock); + + // Everything fine? + if(val != (THRC*PERINC) ){ + printf("FAILED! (Result: %u, Expected: %u)\n", val, (THRC*PERINC) ); + }else{ + printf("OK! (Result: %u, Expected: %u)\n", val, (THRC*PERINC) ); + ok++; + } + + } + + + if(ok != LOOPS){ + ShowFatalError("Test failed.\n"); + exit(1); + }else{ + ShowStatus("Test passed.\n"); + exit(0); + } + + +return 0; }//end: do_init() -void do_abort() -{ +void do_abort(){ }//end: do_abort() -void set_server_type() -{ - SERVER_TYPE = ATHENA_SERVER_NONE; +void set_server_type(){ + SERVER_TYPE = ATHENA_SERVER_NONE; }//end: set_server_type() -void do_final() -{ +void do_final(){ }//end: do_final() -int parse_console(const char *command) -{ - return 0; +int parse_console(const char* command){ + return 0; }//end: parse_console |