aboutsummaryrefslogtreecommitdiff
path: root/src/threading.h
diff options
context:
space:
mode:
authorBenoit Germain <bnt.germain@gmail.com>2022-02-07 08:56:39 +0100
committerBenoit Germain <bnt.germain@gmail.com>2022-02-07 08:56:39 +0100
commit621fb024b5f887ef9e81e2f28bf087386f5300e1 (patch)
tree3ed681e2db07a0516904b2cda4e7144c714d19e0 /src/threading.h
parent00c84df3adc0b295ef20bc35bc8df9632e3b93e7 (diff)
downloadlanes-621fb024b5f887ef9e81e2f28bf087386f5300e1.tar.gz
lanes-621fb024b5f887ef9e81e2f28bf087386f5300e1.tar.bz2
lanes-621fb024b5f887ef9e81e2f28bf087386f5300e1.zip
Changed all indentations to all whitespaces
Tabs mess up alignment of stack contents comments, so I'm done with them.
Diffstat (limited to 'src/threading.h')
-rw-r--r--src/threading.h67
1 files changed, 32 insertions, 35 deletions
diff --git a/src/threading.h b/src/threading.h
index 778b6a0..1224e08 100644
--- a/src/threading.h
+++ b/src/threading.h
@@ -66,41 +66,41 @@ enum e_status { PENDING, RUNNING, WAITING, DONE, ERROR_ST, CANCELLED };
66 // needed for use with the SIGNAL system. 66 // needed for use with the SIGNAL system.
67 // 67 //
68 68
69 #if _WIN32_WINNT < 0x0600 // CONDITION_VARIABLE aren't available, use a signal 69 #if _WIN32_WINNT < 0x0600 // CONDITION_VARIABLE aren't available, use a signal
70 70
71 typedef struct 71 typedef struct
72 { 72 {
73 CRITICAL_SECTION signalCS; 73 CRITICAL_SECTION signalCS;
74 CRITICAL_SECTION countCS; 74 CRITICAL_SECTION countCS;
75 HANDLE waitEvent; 75 HANDLE waitEvent;
76 HANDLE waitDoneEvent; 76 HANDLE waitDoneEvent;
77 LONG waitersCount; 77 LONG waitersCount;
78 } SIGNAL_T; 78 } SIGNAL_T;
79 79
80 80
81 #define MUTEX_T HANDLE 81 #define MUTEX_T HANDLE
82 void MUTEX_INIT( MUTEX_T* ref); 82 void MUTEX_INIT( MUTEX_T* ref);
83 void MUTEX_FREE( MUTEX_T* ref); 83 void MUTEX_FREE( MUTEX_T* ref);
84 void MUTEX_LOCK( MUTEX_T* ref); 84 void MUTEX_LOCK( MUTEX_T* ref);
85 void MUTEX_UNLOCK( MUTEX_T* ref); 85 void MUTEX_UNLOCK( MUTEX_T* ref);
86 86
87 #else // CONDITION_VARIABLE are available, use them 87 #else // CONDITION_VARIABLE are available, use them
88 88
89 #define SIGNAL_T CONDITION_VARIABLE 89 #define SIGNAL_T CONDITION_VARIABLE
90 #define MUTEX_T CRITICAL_SECTION 90 #define MUTEX_T CRITICAL_SECTION
91 #define MUTEX_INIT( ref) InitializeCriticalSection( ref) 91 #define MUTEX_INIT( ref) InitializeCriticalSection( ref)
92 #define MUTEX_FREE( ref) DeleteCriticalSection( ref) 92 #define MUTEX_FREE( ref) DeleteCriticalSection( ref)
93 #define MUTEX_LOCK( ref) EnterCriticalSection( ref) 93 #define MUTEX_LOCK( ref) EnterCriticalSection( ref)
94 #define MUTEX_UNLOCK( ref) LeaveCriticalSection( ref) 94 #define MUTEX_UNLOCK( ref) LeaveCriticalSection( ref)
95 95
96 #endif // CONDITION_VARIABLE are available 96 #endif // CONDITION_VARIABLE are available
97 97
98 #define MUTEX_RECURSIVE_INIT(ref) MUTEX_INIT(ref) /* always recursive in Win32 */ 98 #define MUTEX_RECURSIVE_INIT(ref) MUTEX_INIT(ref) /* always recursive in Win32 */
99 99
100 typedef unsigned int THREAD_RETURN_T; 100 typedef unsigned int THREAD_RETURN_T;
101 101
102 #define YIELD() Sleep(0) 102 #define YIELD() Sleep(0)
103 #define THREAD_CALLCONV __stdcall 103 #define THREAD_CALLCONV __stdcall
104#else // THREADAPI == THREADAPI_PTHREAD 104#else // THREADAPI == THREADAPI_PTHREAD
105 // PThread (Linux, OS X, ...) 105 // PThread (Linux, OS X, ...)
106 106
@@ -143,13 +143,10 @@ enum e_status { PENDING, RUNNING, WAITING, DONE, ERROR_ST, CANCELLED };
143 // 143 //
144 #if defined( PLATFORM_OSX) 144 #if defined( PLATFORM_OSX)
145 #define YIELD() pthread_yield_np() 145 #define YIELD() pthread_yield_np()
146#elif defined( PLATFORM_WIN32) || defined( PLATFORM_POCKETPC) || defined(__ANDROID__) || defined(__NetBSD__) // no PTHREAD for PLATFORM_XBOX
147 // for some reason win32-pthread doesn't have pthread_yield(), but sched_yield()
148 #define YIELD() sched_yield()
149 #else 146 #else
150 #define YIELD() sched_yield() 147 #define YIELD() sched_yield()
151 #endif 148 #endif
152 #define THREAD_CALLCONV 149 #define THREAD_CALLCONV
153#endif //THREADAPI == THREADAPI_PTHREAD 150#endif //THREADAPI == THREADAPI_PTHREAD
154 151
155void SIGNAL_INIT( SIGNAL_T *ref ); 152void SIGNAL_INIT( SIGNAL_T *ref );
@@ -174,9 +171,9 @@ bool_t SIGNAL_WAIT( SIGNAL_T *ref, MUTEX_T *mu, time_d timeout );
174 171
175#if THREADAPI == THREADAPI_WINDOWS 172#if THREADAPI == THREADAPI_WINDOWS
176 173
177 typedef HANDLE THREAD_T; 174 typedef HANDLE THREAD_T;
178# define THREAD_ISNULL( _h) (_h == 0) 175# define THREAD_ISNULL( _h) (_h == 0)
179 void THREAD_CREATE( THREAD_T* ref, THREAD_RETURN_T (__stdcall *func)( void*), void* data, int prio /* -3..+3 */); 176 void THREAD_CREATE( THREAD_T* ref, THREAD_RETURN_T (__stdcall *func)( void*), void* data, int prio /* -3..+3 */);
180 177
181# define THREAD_PRIO_MIN (-3) 178# define THREAD_PRIO_MIN (-3)
182# define THREAD_PRIO_MAX (+3) 179# define THREAD_PRIO_MAX (+3)
@@ -186,9 +183,9 @@ bool_t SIGNAL_WAIT( SIGNAL_T *ref, MUTEX_T *mu, time_d timeout );
186 183
187#else // THREADAPI == THREADAPI_PTHREAD 184#else // THREADAPI == THREADAPI_PTHREAD
188 185
189 /* Platforms that have a timed 'pthread_join()' can get away with a simpler 186 /* Platforms that have a timed 'pthread_join()' can get away with a simpler
190 * implementation. Others will use a condition variable. 187 * implementation. Others will use a condition variable.
191 */ 188 */
192# if defined __WINPTHREADS_VERSION 189# if defined __WINPTHREADS_VERSION
193//# define USE_PTHREAD_TIMEDJOIN 190//# define USE_PTHREAD_TIMEDJOIN
194# endif // __WINPTHREADS_VERSION 191# endif // __WINPTHREADS_VERSION
@@ -202,13 +199,13 @@ bool_t SIGNAL_WAIT( SIGNAL_T *ref, MUTEX_T *mu, time_d timeout );
202# endif 199# endif
203# endif 200# endif
204 201
205 typedef pthread_t THREAD_T; 202 typedef pthread_t THREAD_T;
206# define THREAD_ISNULL( _h) 0 // pthread_t may be a structure: never 'null' by itself 203# define THREAD_ISNULL( _h) 0 // pthread_t may be a structure: never 'null' by itself
207 204
208 void THREAD_CREATE( THREAD_T* ref, THREAD_RETURN_T (*func)( void*), void* data, int prio /* -3..+3 */); 205 void THREAD_CREATE( THREAD_T* ref, THREAD_RETURN_T (*func)( void*), void* data, int prio /* -3..+3 */);
209 206
210# if defined(PLATFORM_LINUX) 207# if defined(PLATFORM_LINUX)
211 extern volatile bool_t sudo; 208 extern volatile bool_t sudo;
212# ifdef LINUX_SCHED_RR 209# ifdef LINUX_SCHED_RR
213# define THREAD_PRIO_MIN (sudo ? -3 : 0) 210# define THREAD_PRIO_MIN (sudo ? -3 : 0)
214# else 211# else