summaryrefslogtreecommitdiffstats
path: root/cpukit/score
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>1995-07-31 22:22:38 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>1995-07-31 22:22:38 +0000
commit3a5dbdca1b37bacc18fe61701530d28c6f1254ee (patch)
treef66a52eed17566556efe5622d384bc6c01c9f4b3 /cpukit/score
parentfixed path problem for POSIX (diff)
downloadrtems-3a5dbdca1b37bacc18fe61701530d28c6f1254ee.tar.bz2
Switched to events for mp receive server and eliminated the special
blocking mechanism for it.
Diffstat (limited to 'cpukit/score')
-rw-r--r--cpukit/score/include/rtems/score/mppkt.h2
-rw-r--r--cpukit/score/include/rtems/score/threadmp.h20
-rw-r--r--cpukit/score/src/thread.c3
-rw-r--r--cpukit/score/src/threadmp.c70
4 files changed, 3 insertions, 92 deletions
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
@@ -90,26 +90,6 @@ Thread_Control *_Thread_MP_Find_proxy (
);
/*
- * _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
* blocking the multiprocessing receive thread.
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 );
-
- }
-}