summaryrefslogtreecommitdiff
path: root/src/test/test_spinlock.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/test_spinlock.c')
-rw-r--r--src/test/test_spinlock.c33
1 files changed, 18 insertions, 15 deletions
diff --git a/src/test/test_spinlock.c b/src/test/test_spinlock.c
index 38186a975..4ceeea7b9 100644
--- a/src/test/test_spinlock.c
+++ b/src/test/test_spinlock.c
@@ -2,8 +2,8 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2015 Hercules Dev Team
- * Copyright (C) Athena Dev Teams
+ * Copyright (C) 2012-2020 Hercules Dev Team
+ * Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -38,7 +38,7 @@
#define PERINC 100000
#define LOOPS 47
-static SPIN_LOCK lock;
+static struct spin_lock lock;
static unsigned int val = 0;
static volatile int32 done_threads = 0;
@@ -60,13 +60,14 @@ static void *worker(void *p){
return NULL;
}//end: worker()
-int do_init(int argc, char **argv){
- rAthread *t[THRC];
+int do_init(int argc, char **argv)
+{
+ struct thread_handle *t[THRC];
int j, i;
int ok;
ShowStatus("==========\n");
- ShowStatus("TEST: %u Runs, (%u Threads)\n", LOOPS, THRC);
+ ShowStatus("TEST: %d Runs, (%d Threads)\n", LOOPS, THRC);
ShowStatus("This can take a while\n");
ShowStatus("\n\n");
@@ -78,35 +79,35 @@ int do_init(int argc, char **argv){
InitializeSpinLock(&lock);
for(i =0; i < THRC; i++){
- t[i] = rathread_createEx( worker, NULL, 1024*512, RAT_PRIO_NORMAL);
+ t[i] = thread->create_opt(worker, NULL, 1024*512, THREADPRIO_NORMAL);
}
+ (void)t;
while(1){
if(InterlockedCompareExchange(&done_threads, THRC, THRC) == THRC)
break;
- rathread_yield();
+ thread->yield();
}
FinalizeSpinLock(&lock);
// Everything fine?
if (val != (THRC*PERINC)) {
- printf("FAILED! (Result: %u, Expected: %u)\n", val, (THRC*PERINC));
+ printf("FAILED! (Result: %u, Expected: %d)\n", val, (THRC*PERINC));
} else {
- printf("OK! (Result: %u, Expected: %u)\n", val, (THRC*PERINC));
+ printf("OK! (Result: %u, Expected: %d)\n", val, (THRC*PERINC));
ok++;
}
}
- if(ok != LOOPS){
+ if (ok != LOOPS) {
ShowFatalError("Test failed.\n");
exit(1);
- }else{
- ShowStatus("Test passed.\n");
- exit(0);
}
- return 0;
+
+ core->runflag = CORE_ST_STOP;
+ return EXIT_SUCCESS;
}//end: do_init()
void do_abort(void) {
@@ -117,6 +118,8 @@ void set_server_type(void) {
}//end: set_server_type()
int do_final(void) {
+ ShowStatus("Test passed.\n");
+
return EXIT_SUCCESS;
}//end: do_final()