diff options
author | Thomas Schuetz | 2013-04-10 06:00:18 +0000 |
---|---|---|
committer | Thomas Schuetz | 2013-04-10 06:00:18 +0000 |
commit | bdeb20297bf7a180e1ade30970f72696f40204c2 (patch) | |
tree | 94e340624c9309b03b2f97a4ed832122657e3198 /runtime/org.eclipse.etrice.runtime.c/src/common/messaging/etMessageService.c | |
parent | 95537aab385a67c1423fc8961763dd8b43c3f836 (diff) | |
download | org.eclipse.etrice-bdeb20297bf7a180e1ade30970f72696f40204c2.tar.gz org.eclipse.etrice-bdeb20297bf7a180e1ade30970f72696f40204c2.tar.xz org.eclipse.etrice-bdeb20297bf7a180e1ade30970f72696f40204c2.zip |
[runtime.c, generator.c] added WakeupService and changes for polled
execution for multi threading
Change-Id: Ic911d89af77150210ce9e7b1ba023a8acfdfc5e3
Diffstat (limited to 'runtime/org.eclipse.etrice.runtime.c/src/common/messaging/etMessageService.c')
-rw-r--r-- | runtime/org.eclipse.etrice.runtime.c/src/common/messaging/etMessageService.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/runtime/org.eclipse.etrice.runtime.c/src/common/messaging/etMessageService.c b/runtime/org.eclipse.etrice.runtime.c/src/common/messaging/etMessageService.c index de713f568..3d119ea80 100644 --- a/runtime/org.eclipse.etrice.runtime.c/src/common/messaging/etMessageService.c +++ b/runtime/org.eclipse.etrice.runtime.c/src/common/messaging/etMessageService.c @@ -23,7 +23,7 @@ * initialize message service with all needed data and initialize message queue and message pool
*
*/
-void etMessageService_init(etMessageService* self, etUInt8* buffer, etUInt16 maxBlocks, etUInt16 blockSize, etDispatcherReceiveMessage msgDispatcher){
+void etMessageService_init(etMessageService* self, etUInt8* buffer, etUInt16 maxBlocks, etUInt16 blockSize, etDispatcherReceiveMessage msgDispatcher, etDispatcherExecute executeFct, enum etMessageService_execmode execmode){
ET_MSC_LOGGER_SYNC_ENTRY("etMessageService", "init")
/* copy init data to self */
@@ -31,6 +31,8 @@ void etMessageService_init(etMessageService* self, etUInt8* buffer, etUInt16 max self->messageBuffer.maxBlocks = maxBlocks;
self->messageBuffer.blockSize = blockSize;
self->msgDispatcher = msgDispatcher;
+ self->executeFct = executeFct;
+ self->execmode = execmode;
/* copy init queue and pool */
etMessageQueue_init( &(self->messagePool) ); /* the pool is also a queue*/
@@ -110,6 +112,12 @@ etMessage* etMessageService_getMessageBuffer(etMessageService* self, etUInt16 si ET_MSC_LOGGER_SYNC_EXIT
return msg;
}
+ else {
+ etLogger_logErrorF("etMessageService_getMessageBuffer: message pool empty: %d", etMessageService_getMessagePoolLowWaterMark(self));
+ }
+ }
+ else {
+ etLogger_logErrorF("etMessageService_getMessageBuffer: message too big: %d, blockSize: %d", size, self->messageBuffer.blockSize);
}
etMutex_leave(&self->poolMutex);
ET_MSC_LOGGER_SYNC_EXIT
|