From 02e4dcd3a2fceb9cfbf805b3b2396e188329e164 Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Thu, 9 Aug 2001 20:48:58 +0000 Subject: 2001-08-09 Joel Sherrill * 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 . --- cpukit/itron/ChangeLog | 7 +++++++ cpukit/itron/src/snd_mbx.c | 7 +++---- cpukit/itron/src/tsnd_mbf.c | 5 +++-- 3 files changed, 13 insertions(+), 6 deletions(-) (limited to 'cpukit') 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 + + * 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 . + 2001-04-27 Ralf Corsepius * 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 ); } -- cgit v1.2.3