2001-08-09 Joel Sherrill <joel@OARcorp.com>

* src/msgqsubmit.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>.
This commit is contained in:
Joel Sherrill
2001-08-09 20:48:01 +00:00
parent 00815403be
commit 33c31af7c8
4 changed files with 24 additions and 10 deletions

View File

@@ -1,3 +1,10 @@
2001-08-09 Joel Sherrill <joel@OARcorp.com>
* src/msgqsubmit.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-03-26 Zoltan Kocsi <zoltan@bendor.com.au>

View File

@@ -67,6 +67,7 @@ rtems_status_code _Message_queue_Submit(
{
register Message_queue_Control *the_message_queue;
Objects_Locations location;
CORE_message_queue_Status msg_status;
the_message_queue = _Message_queue_Get( id, &location );
switch ( location )
@@ -103,7 +104,7 @@ rtems_status_code _Message_queue_Submit(
case OBJECTS_LOCAL:
switch ( submit_type ) {
case MESSAGE_QUEUE_SEND_REQUEST:
_CORE_message_queue_Send(
msg_status = _CORE_message_queue_Send(
&the_message_queue->message_queue,
buffer,
size,
@@ -114,7 +115,7 @@ rtems_status_code _Message_queue_Submit(
);
break;
case MESSAGE_QUEUE_URGENT_REQUEST:
_CORE_message_queue_Urgent(
msg_status = _CORE_message_queue_Urgent(
&the_message_queue->message_queue,
buffer,
size,
@@ -129,9 +130,8 @@ rtems_status_code _Message_queue_Submit(
}
_Thread_Enable_dispatch();
return _Message_queue_Translate_core_message_queue_return_code(
_Thread_Executing->Wait.return_code
);
return
_Message_queue_Translate_core_message_queue_return_code( msg_status );
}
return RTEMS_INTERNAL_ERROR; /* unreached - only to remove warnings */

View File

@@ -1,3 +1,10 @@
2001-08-09 Joel Sherrill <joel@OARcorp.com>
* src/msgqsubmit.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-03-26 Zoltan Kocsi <zoltan@bendor.com.au>

View File

@@ -67,6 +67,7 @@ rtems_status_code _Message_queue_Submit(
{
register Message_queue_Control *the_message_queue;
Objects_Locations location;
CORE_message_queue_Status msg_status;
the_message_queue = _Message_queue_Get( id, &location );
switch ( location )
@@ -103,7 +104,7 @@ rtems_status_code _Message_queue_Submit(
case OBJECTS_LOCAL:
switch ( submit_type ) {
case MESSAGE_QUEUE_SEND_REQUEST:
_CORE_message_queue_Send(
msg_status = _CORE_message_queue_Send(
&the_message_queue->message_queue,
buffer,
size,
@@ -114,7 +115,7 @@ rtems_status_code _Message_queue_Submit(
);
break;
case MESSAGE_QUEUE_URGENT_REQUEST:
_CORE_message_queue_Urgent(
msg_status = _CORE_message_queue_Urgent(
&the_message_queue->message_queue,
buffer,
size,
@@ -129,9 +130,8 @@ rtems_status_code _Message_queue_Submit(
}
_Thread_Enable_dispatch();
return _Message_queue_Translate_core_message_queue_return_code(
_Thread_Executing->Wait.return_code
);
return
_Message_queue_Translate_core_message_queue_return_code( msg_status );
}
return RTEMS_INTERNAL_ERROR; /* unreached - only to remove warnings */