Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas Schuetz2013-04-10 06:00:18 +0000
committerThomas Schuetz2013-04-10 06:00:18 +0000
commitbdeb20297bf7a180e1ade30970f72696f40204c2 (patch)
tree94e340624c9309b03b2f97a4ed832122657e3198 /runtime/org.eclipse.etrice.runtime.c/src/common/messaging/etMessageService.c
parent95537aab385a67c1423fc8961763dd8b43c3f836 (diff)
downloadorg.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.c10
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

Back to the top