From 3a5dbdca1b37bacc18fe61701530d28c6f1254ee Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Mon, 31 Jul 1995 22:22:38 +0000 Subject: Switched to events for mp receive server and eliminated the special blocking mechanism for it. --- cpukit/score/include/rtems/score/mppkt.h | 2 +- cpukit/score/include/rtems/score/threadmp.h | 20 --------- cpukit/score/src/thread.c | 3 +- cpukit/score/src/threadmp.c | 70 ----------------------------- 4 files changed, 3 insertions(+), 92 deletions(-) (limited to 'cpukit/score') diff --git a/cpukit/score/include/rtems/score/mppkt.h b/cpukit/score/include/rtems/score/mppkt.h index e0cf6b1967..4e72d6930a 100644 --- a/cpukit/score/include/rtems/score/mppkt.h +++ b/cpukit/score/include/rtems/score/mppkt.h @@ -38,7 +38,7 @@ extern "C" { typedef enum { RTEMS_MP_PACKET_INTERNAL_THREADS = 0, - RTEMS_MP_PACKET_TASKS = 1, + RTEMS_MP_PACKET_TASKS = 1, RTEMS_MP_PACKET_MESSAGE_QUEUE = 2, RTEMS_MP_PACKET_SEMAPHORE = 3, RTEMS_MP_PACKET_PARTITION = 4, diff --git a/cpukit/score/include/rtems/score/threadmp.h b/cpukit/score/include/rtems/score/threadmp.h index c6e8252030..db94a65d78 100644 --- a/cpukit/score/include/rtems/score/threadmp.h +++ b/cpukit/score/include/rtems/score/threadmp.h @@ -89,26 +89,6 @@ Thread_Control *_Thread_MP_Find_proxy ( Objects_Id the_id ); -/* - * _Thread_MP_Block - * - * DESCRIPTION: - * - * This routine blocks the MP Receive server thread. - */ - -void _Thread_MP_Block( void ); - -/* - * _Thread_MP_Ready - * - * DESCRIPTION: - * - * This routine readies the MP Receive server thread. - */ - -void _Thread_MP_Ready( void ); - /* * The following is used to determine when the multiprocessing receive * thread is executing so that a proxy can be allocated instead of diff --git a/cpukit/score/src/thread.c b/cpukit/score/src/thread.c index a181780e52..9c9a7691c8 100644 --- a/cpukit/score/src/thread.c +++ b/cpukit/score/src/thread.c @@ -316,7 +316,8 @@ void _Thread_Clear_state( if ( the_thread->current_priority < _Thread_Heir->current_priority ) { _Thread_Heir = the_thread; - if ( _Modes_Is_preempt( _Thread_Executing->current_modes ) ) + if ( _Modes_Is_preempt( _Thread_Executing->current_modes ) || + the_thread->current_priority == 0 ) _Context_Switch_necessary = TRUE; } } diff --git a/cpukit/score/src/threadmp.c b/cpukit/score/src/threadmp.c index 5d352e2d25..f2b78cd8cd 100644 --- a/cpukit/score/src/threadmp.c +++ b/cpukit/score/src/threadmp.c @@ -157,73 +157,3 @@ restart: _ISR_Enable( level ); return NULL; } - -/*PAGE - * - * _Thread_MP_Block - * - */ - -void _Thread_MP_Block( void ) -{ - ISR_Level level; - - _ISR_Disable( level ); - - if ( _Thread_MP_Receive->Notepads[ 0 ] != 0 ) { - _Priority_Remove_from_bit_map( &_Thread_MP_Receive->Priority_map ); - - _Thread_MP_Receive->current_state = STATES_SUSPENDED; - - _ISR_Flash( level ); - - _Thread_Calculate_heir(); - - _Context_Switch_necessary = TRUE; - - _ISR_Enable( level ); - - _Thread_Dispatch_disable_level = 0; - - _Thread_Dispatch(); - - return; - - } - _ISR_Enable( level ); - -} - -/*PAGE - * - * _Thread_MP_Ready - * - */ - -void _Thread_MP_Ready( void ) -{ - ISR_Level level; - - _ISR_Disable( level ); - - if ( _States_Is_suspended( _Thread_MP_Receive->current_state ) ) { - _Priority_Add_to_bit_map( &_Thread_MP_Receive->Priority_map ); - - _Thread_MP_Receive->current_state = STATES_READY; - - _Thread_Heir = _Thread_MP_Receive; - - _Context_Switch_necessary = TRUE; - - _ISR_Enable( level ); - - if ( _Thread_Is_dispatching_enabled() ) - _Thread_Dispatch(); - - } else { - - _Thread_MP_Receive->Notepads[ 0 ] = 0; - _ISR_Enable( level ); - - } -} -- cgit v1.2.3