summaryrefslogtreecommitdiffstats
path: root/c/src/exec/rtems/src/msgmp.c
diff options
context:
space:
mode:
Diffstat (limited to 'c/src/exec/rtems/src/msgmp.c')
-rw-r--r--c/src/exec/rtems/src/msgmp.c29
1 files changed, 25 insertions, 4 deletions
diff --git a/c/src/exec/rtems/src/msgmp.c b/c/src/exec/rtems/src/msgmp.c
index 2168b9db7d..b7ded2cf30 100644
--- a/c/src/exec/rtems/src/msgmp.c
+++ b/c/src/exec/rtems/src/msgmp.c
@@ -73,6 +73,8 @@ void _Message_queue_MP_Send_process_packet (
case MESSAGE_QUEUE_MP_BROADCAST_RESPONSE:
case MESSAGE_QUEUE_MP_FLUSH_REQUEST:
case MESSAGE_QUEUE_MP_FLUSH_RESPONSE:
+ case MESSAGE_QUEUE_MP_GET_NUMBER_PENDING_REQUEST:
+ case MESSAGE_QUEUE_MP_GET_NUMBER_PENDING_RESPONSE:
break;
}
@@ -101,6 +103,7 @@ rtems_status_code _Message_queue_MP_Send_request_packet (
case MESSAGE_QUEUE_MP_URGENT_REQUEST:
case MESSAGE_QUEUE_MP_BROADCAST_REQUEST:
case MESSAGE_QUEUE_MP_FLUSH_REQUEST:
+ case MESSAGE_QUEUE_MP_GET_NUMBER_PENDING_REQUEST:
the_packet = _Message_queue_MP_Get_packet();
the_packet->Prefix.the_class = MP_PACKET_MESSAGE_QUEUE;
@@ -120,7 +123,7 @@ rtems_status_code _Message_queue_MP_Send_request_packet (
return RTEMS_INVALID_SIZE;
}
- if ( ! _Options_Is_no_wait(option_set))
+ if (! _Options_Is_no_wait(option_set))
the_packet->Prefix.timeout = timeout;
the_packet->operation = operation;
@@ -154,7 +157,7 @@ rtems_status_code _Message_queue_MP_Send_request_packet (
the_packet->Prefix.length = sizeof(Message_queue_MP_Packet);
the_packet->Prefix.to_convert = sizeof(Message_queue_MP_Packet);
- if ( ! _Options_Is_no_wait(option_set))
+ if (! _Options_Is_no_wait(option_set))
the_packet->Prefix.timeout = timeout;
the_packet->operation = MESSAGE_QUEUE_MP_RECEIVE_REQUEST;
@@ -180,6 +183,7 @@ rtems_status_code _Message_queue_MP_Send_request_packet (
case MESSAGE_QUEUE_MP_URGENT_RESPONSE:
case MESSAGE_QUEUE_MP_BROADCAST_RESPONSE:
case MESSAGE_QUEUE_MP_FLUSH_RESPONSE:
+ case MESSAGE_QUEUE_MP_GET_NUMBER_PENDING_RESPONSE:
break;
}
@@ -207,6 +211,7 @@ void _Message_queue_MP_Send_response_packet (
case MESSAGE_QUEUE_MP_URGENT_RESPONSE:
case MESSAGE_QUEUE_MP_BROADCAST_RESPONSE:
case MESSAGE_QUEUE_MP_FLUSH_RESPONSE:
+ case MESSAGE_QUEUE_MP_GET_NUMBER_PENDING_RESPONSE:
the_packet = ( Message_queue_MP_Packet *) the_thread->receive_packet;
@@ -237,6 +242,7 @@ void _Message_queue_MP_Send_response_packet (
case MESSAGE_QUEUE_MP_URGENT_REQUEST:
case MESSAGE_QUEUE_MP_BROADCAST_REQUEST:
case MESSAGE_QUEUE_MP_FLUSH_REQUEST:
+ case MESSAGE_QUEUE_MP_GET_NUMBER_PENDING_REQUEST:
break;
}
@@ -284,7 +290,7 @@ void _Message_queue_MP_Process_packet (
the_thread = _Thread_MP_Find_proxy( the_packet->proxy_id );
- if ( ! _Thread_Is_null( the_thread ) )
+ if (! _Thread_Is_null( the_thread ) )
_Thread_queue_Extract( the_thread->Wait.queue, the_thread );
_MPCI_Return_packet( the_packet_prefix );
@@ -300,7 +306,7 @@ void _Message_queue_MP_Process_packet (
the_packet->Prefix.timeout
);
- if ( ! _Thread_Is_proxy_blocking( the_packet->Prefix.return_code ) )
+ if (! _Thread_Is_proxy_blocking( the_packet->Prefix.return_code ) )
_Message_queue_MP_Send_response_packet(
MESSAGE_QUEUE_MP_RECEIVE_RESPONSE,
the_packet->Prefix.id,
@@ -382,6 +388,7 @@ void _Message_queue_MP_Process_packet (
case MESSAGE_QUEUE_MP_BROADCAST_RESPONSE:
case MESSAGE_QUEUE_MP_FLUSH_RESPONSE:
+ case MESSAGE_QUEUE_MP_GET_NUMBER_PENDING_RESPONSE:
the_thread = _MPCI_Process_response( the_packet_prefix );
@@ -404,6 +411,20 @@ void _Message_queue_MP_Process_packet (
);
break;
+ case MESSAGE_QUEUE_MP_GET_NUMBER_PENDING_REQUEST:
+
+ the_packet->Prefix.return_code = rtems_message_queue_get_number_pending(
+ the_packet->Prefix.id,
+ &the_packet->count
+ );
+
+ _Message_queue_MP_Send_response_packet(
+ MESSAGE_QUEUE_MP_GET_NUMBER_PENDING_RESPONSE,
+ the_packet->Prefix.id,
+ _Thread_Executing
+ );
+ break;
+
}
}