From c5a68eb233a00cf9c3fd9c9664d23871bd93578a Mon Sep 17 00:00:00 2001 From: tjung Date: Sat, 10 Nov 2012 20:19:08 +0100 Subject: [runtime.c] Threading for MinGW added --- .../src/platforms/generic/etDatatypes.h | 15 ++++++++++ .../src/platforms/generic/etPlatform.c | 35 ++++++++++++++++++++++ 2 files changed, 50 insertions(+) (limited to 'runtime/org.eclipse.etrice.runtime.c/src/platforms') diff --git a/runtime/org.eclipse.etrice.runtime.c/src/platforms/generic/etDatatypes.h b/runtime/org.eclipse.etrice.runtime.c/src/platforms/generic/etDatatypes.h index 6b45744d4..09fd1478c 100644 --- a/runtime/org.eclipse.etrice.runtime.c/src/platforms/generic/etDatatypes.h +++ b/runtime/org.eclipse.etrice.runtime.c/src/platforms/generic/etDatatypes.h @@ -19,7 +19,10 @@ * * */ +#include #include +#include + /* unsigned integer datatypes */ typedef unsigned char uint8; @@ -76,4 +79,16 @@ typedef FILE* etFileHandle; typedef int8 etAddressId; +/* + * typedefs for threading + */ + +typedef CRITICAL_SECTION etMutex; +typedef HANDLE etThread; +typedef HANDLE etSema; + +typedef int32 etStacksize; +typedef int32 etPriority; +typedef charPtr etThreadname; + #endif /* _DATATYPES_H_ */ 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 5a4115f8c..c79c2ac1a 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 @@ -10,6 +10,7 @@ * *******************************************************************************/ +#include /* implemenatation for eTrice interfaces*/ @@ -24,3 +25,37 @@ void etUserExit(void){ } /* platform specific functions */ +/******************thread********************/ +void etThread_construct(etThread* self, etThreadname name,void (*func)(void *),etStacksize stacksize, etPriority prio){ + *self = (HANDLE)_beginthread( func, stacksize, NULL ); + SetThreadPriority(*self,THREAD_PRIORITY_NORMAL); +} + +void etThread_destruct(etThread* self){} + +/*****************mutex**********************/ +void etMutex_construct(etMutex* self){ + InitializeCriticalSection( self ); +} +void etMutex_destruct(etMutex* self){} +void etMutex_enter(etMutex* self){ + EnterCriticalSection( self ); +} +void etMutex_leave(etMutex* self){ + LeaveCriticalSection( self ); +} + +/********************semaphore****************/ +void etSema_contruct(etSema* self){ + *self = CreateEvent( NULL, FALSE, FALSE, NULL ); +} +void etSema_destruct(etSema* self){} + +void etSema_wakeup(etSema* self){ + SetEvent(self); +} + +void etSema_waitForWakeup(etSema* self){ + WaitForSingleObject( self, INFINITE ); +} +/*********************************************/ -- cgit v1.2.3