diff options
Diffstat (limited to 'cpukit/rtems/src/msgqgetnumberpending.c')
-rw-r--r-- | cpukit/rtems/src/msgqgetnumberpending.c | 47 |
1 files changed, 16 insertions, 31 deletions
diff --git a/cpukit/rtems/src/msgqgetnumberpending.c b/cpukit/rtems/src/msgqgetnumberpending.c index 756e8fe9c9..6fa0e4f62e 100644 --- a/cpukit/rtems/src/msgqgetnumberpending.c +++ b/cpukit/rtems/src/msgqgetnumberpending.c @@ -26,48 +26,33 @@ rtems_status_code rtems_message_queue_get_number_pending( ) { Message_queue_Control *the_message_queue; - Objects_Locations location; ISR_lock_Context lock_context; - if ( !count ) + if ( count == NULL ) { return RTEMS_INVALID_ADDRESS; + } the_message_queue = _Message_queue_Get_interrupt_disable( id, - &location, &lock_context ); - switch ( location ) { - - case OBJECTS_LOCAL: - _CORE_message_queue_Acquire_critical( - &the_message_queue->message_queue, - &lock_context - ); - *count = the_message_queue->message_queue.number_of_pending_messages; - _CORE_message_queue_Release( - &the_message_queue->message_queue, - &lock_context - ); - return RTEMS_SUCCESSFUL; + if ( the_message_queue == NULL ) { #if defined(RTEMS_MULTIPROCESSING) - case OBJECTS_REMOTE: - _Thread_Get_executing()->Wait.return_argument = count; - - return _Message_queue_MP_Send_request_packet( - MESSAGE_QUEUE_MP_GET_NUMBER_PENDING_REQUEST, - id, - 0, /* buffer not used */ - 0, /* size */ - 0, /* option_set not used */ - MPCI_DEFAULT_TIMEOUT - ); + _Message_queue_MP_Get_number_pending( id, count ); +#else + return RTEMS_INVALID_ID; #endif - - case OBJECTS_ERROR: - break; } - return RTEMS_INVALID_ID; + _CORE_message_queue_Acquire_critical( + &the_message_queue->message_queue, + &lock_context + ); + *count = the_message_queue->message_queue.number_of_pending_messages; + _CORE_message_queue_Release( + &the_message_queue->message_queue, + &lock_context + ); + return RTEMS_SUCCESSFUL; } |