summaryrefslogtreecommitdiffstats
path: root/cpukit
diff options
context:
space:
mode:
Diffstat (limited to 'cpukit')
-rw-r--r--cpukit/itron/ChangeLog7
-rw-r--r--cpukit/itron/src/snd_mbx.c7
-rw-r--r--cpukit/itron/src/tsnd_mbf.c5
3 files changed, 13 insertions, 6 deletions
diff --git a/cpukit/itron/ChangeLog b/cpukit/itron/ChangeLog
index 2123afb8d4..4a2d095bd3 100644
--- a/cpukit/itron/ChangeLog
+++ b/cpukit/itron/ChangeLog
@@ -1,3 +1,10 @@
+2001-08-09 Joel Sherrill <joel@OARcorp.com>
+
+ * src/snd_mbx.c, src/tsnd_mbf.c: Unblocking message queue operations
+ should NOT use _Thread_Executing for return status since it is
+ permissible to invoke message send operations from an ISR. This was
+ reported by Suvrat Gupta <suvrat@utstar.com>.
+
2001-04-27 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
* configure.in: Add [-ansi -fasm] to RTEMS_PROG_CC_FOR_TARGET.
diff --git a/cpukit/itron/src/snd_mbx.c b/cpukit/itron/src/snd_mbx.c
index 40c740fc8d..588eb8585c 100644
--- a/cpukit/itron/src/snd_mbx.c
+++ b/cpukit/itron/src/snd_mbx.c
@@ -33,6 +33,7 @@ ER snd_msg(
Objects_Locations location;
unsigned32 message_priority;
void *message_contents;
+ CORE_message_queue_Status msg_status;
if ( !pk_msg )
return E_PAR;
@@ -50,7 +51,7 @@ ER snd_msg(
message_priority = CORE_MESSAGE_QUEUE_SEND_REQUEST;
message_contents = pk_msg;
- _CORE_message_queue_Submit(
+ msg_status = _CORE_message_queue_Submit(
&the_mailbox->message_queue,
&message_contents,
sizeof(T_MSG *),
@@ -64,8 +65,6 @@ ER snd_msg(
}
_ITRON_return_errorno(
- _ITRON_Mailbox_Translate_core_message_queue_return_code(
- _Thread_Executing->Wait.return_code
- )
+ _ITRON_Mailbox_Translate_core_message_queue_return_code( msg_status )
);
}
diff --git a/cpukit/itron/src/tsnd_mbf.c b/cpukit/itron/src/tsnd_mbf.c
index 0116604eb7..91a91f87d2 100644
--- a/cpukit/itron/src/tsnd_mbf.c
+++ b/cpukit/itron/src/tsnd_mbf.c
@@ -37,6 +37,7 @@ ER tsnd_mbf(
Objects_Locations location;
Watchdog_Interval interval;
boolean wait;
+ CORE_message_queue_Status msg_status;
if (msgsz <= 0 || !msg)
return E_PAR;
@@ -61,7 +62,7 @@ ER tsnd_mbf(
case OBJECTS_LOCAL:
/* XXX Submit needs to take into account blocking */
- _CORE_message_queue_Submit(
+ msg_status = _CORE_message_queue_Submit(
&the_message_buffer->message_queue,
msg,
msgsz,
@@ -73,7 +74,7 @@ ER tsnd_mbf(
);
_Thread_Enable_dispatch();
return _ITRON_Message_buffer_Translate_core_message_buffer_return_code(
- _Thread_Executing->Wait.return_code
+ msg_status
);
}