diff options
Diffstat (limited to 'runtime/org.eclipse.etrice.runtime.c/src/platforms/generic/etPlatform.c')
-rw-r--r-- | runtime/org.eclipse.etrice.runtime.c/src/platforms/generic/etPlatform.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/runtime/org.eclipse.etrice.runtime.c/src/platforms/generic/etPlatform.c b/runtime/org.eclipse.etrice.runtime.c/src/platforms/generic/etPlatform.c index e29a8ec0a..efe9f2775 100644 --- a/runtime/org.eclipse.etrice.runtime.c/src/platforms/generic/etPlatform.c +++ b/runtime/org.eclipse.etrice.runtime.c/src/platforms/generic/etPlatform.c @@ -32,13 +32,23 @@ void etUserExit(void){ } #if defined __MINGW32__
/******************thread********************/
+void etThread_execute(etThread* self);
+
void etThread_construct(etThread* self){
ET_MSC_LOGGER_SYNC_ENTRY("etThread", "construct")
- self->osData = (HANDLE)_beginthread( self->threadFunction, self->stacksize, self->threadFunctionData );
+ self->osData = (HANDLE)_beginthread( (etThreadFunction)etThread_execute, self->stacksize, self );
SetThreadPriority(self->osData, self->priority);
ET_MSC_LOGGER_SYNC_EXIT
}
+void etThread_execute(etThread* self){
+ ET_MSC_LOGGER_SYNC_ENTRY("etThread", "execute")
+ /* etThread_execute redirects the call from the thread to the execute function in the eTrice runtime to enable correct synchronous MSC logging */
+ self->threadFunction(self->threadFunctionData);
+ ET_MSC_LOGGER_SYNC_EXIT
+}
+
+
void etThread_destruct(etThread* self){
ET_MSC_LOGGER_SYNC_ENTRY("etThread", "destruct")
TerminateThread(self->osData, 0);
|