summaryrefslogtreecommitdiffstats
path: root/cpukit/itron/src
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>2001-08-09 20:48:58 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>2001-08-09 20:48:58 +0000
commit02e4dcd3a2fceb9cfbf805b3b2396e188329e164 (patch)
tree1bf3086db1463c56f8a095887d5bc226d5e5145a /cpukit/itron/src
parenta781bbffb4eed9d66c3c5defc4fd626d42b745b1 (diff)
downloadrtems-02e4dcd3a2fceb9cfbf805b3b2396e188329e164.tar.bz2
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>.
Diffstat (limited to '')
-rw-r--r--cpukit/itron/src/snd_mbx.c7
-rw-r--r--cpukit/itron/src/tsnd_mbf.c5
2 files changed, 6 insertions, 6 deletions
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
);
}