From 11e8bc5f0fa2d9485908874dbfe9cd65c1aec477 Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Tue, 29 Jun 2010 00:34:12 +0000 Subject: 2010-06-28 Joel Sherrill PR 1573/cpukit * configure.ac, posix/src/killinfo.c, posix/src/psignalclearprocesssignals.c, posix/src/psignalsetprocesssignals.c, posix/src/psignalunblockthread.c, posix/src/pthreadcreate.c, posix/src/pthreadkill.c, posix/src/pthreadsigmask.c, rtems/src/signalsend.c, rtems/src/taskmode.c, score/Makefile.am, score/preinstall.am, score/include/rtems/system.h, score/include/rtems/score/context.h, score/include/rtems/score/isr.h, score/include/rtems/score/thread.h, score/src/isr.c, score/src/isrthreaddispatch.c, score/src/thread.c, score/src/threaddispatch.c, score/src/threadloadenv.c: Add a per cpu data structure which contains the information required by RTEMS for each CPU core. This encapsulates information such as thread executing, heir, idle and dispatch needed. * score/include/rtems/score/percpu.h, score/src/percpu.c: New files. --- cpukit/posix/src/killinfo.c | 2 -- cpukit/posix/src/psignalclearprocesssignals.c | 2 -- cpukit/posix/src/psignalsetprocesssignals.c | 2 -- cpukit/posix/src/psignalunblockthread.c | 4 +--- cpukit/posix/src/pthreadcreate.c | 8 -------- cpukit/posix/src/pthreadkill.c | 4 +--- cpukit/posix/src/pthreadsigmask.c | 1 - 7 files changed, 2 insertions(+), 21 deletions(-) (limited to 'cpukit/posix') diff --git a/cpukit/posix/src/killinfo.c b/cpukit/posix/src/killinfo.c index c02f7807e6..2ae5857a6f 100644 --- a/cpukit/posix/src/killinfo.c +++ b/cpukit/posix/src/killinfo.c @@ -314,8 +314,6 @@ int killinfo( */ process_it: - the_thread->do_post_task_switch_extension = true; - /* * Returns true if the signal was synchronously given to a thread * blocked waiting for the signal. diff --git a/cpukit/posix/src/psignalclearprocesssignals.c b/cpukit/posix/src/psignalclearprocesssignals.c index a601fa2406..b11ae0ebc2 100644 --- a/cpukit/posix/src/psignalclearprocesssignals.c +++ b/cpukit/posix/src/psignalclearprocesssignals.c @@ -53,8 +53,6 @@ void _POSIX_signals_Clear_process_signals( } if ( clear_signal ) { _POSIX_signals_Pending &= ~mask; - if ( !_POSIX_signals_Pending ) - _Thread_Do_post_task_switch_extension--; } _ISR_Enable( level ); } diff --git a/cpukit/posix/src/psignalsetprocesssignals.c b/cpukit/posix/src/psignalsetprocesssignals.c index 25209f3c4d..cb4ad8b241 100644 --- a/cpukit/posix/src/psignalsetprocesssignals.c +++ b/cpukit/posix/src/psignalsetprocesssignals.c @@ -41,8 +41,6 @@ void _POSIX_signals_Set_process_signals( ISR_Level level; _ISR_Disable( level ); - if ( !_POSIX_signals_Pending ) - _Thread_Do_post_task_switch_extension++; _POSIX_signals_Pending |= mask; _ISR_Enable( level ); } diff --git a/cpukit/posix/src/psignalunblockthread.c b/cpukit/posix/src/psignalunblockthread.c index fdba79a00c..912ac34694 100644 --- a/cpukit/posix/src/psignalunblockthread.c +++ b/cpukit/posix/src/psignalunblockthread.c @@ -98,8 +98,6 @@ bool _POSIX_signals_Unblock_thread( * + Any other combination, do nothing. */ - the_thread->do_post_task_switch_extension = true; - if ( the_thread->current_state & STATES_INTERRUPTIBLE_BY_SIGNAL ) { the_thread->Wait.return_code = EINTR; /* @@ -120,7 +118,7 @@ bool _POSIX_signals_Unblock_thread( } } else if ( the_thread->current_state == STATES_READY ) { if ( _ISR_Is_in_progress() && _Thread_Is_executing( the_thread ) ) - _ISR_Signals_to_thread_executing = true; + _Context_Switch_necessary = true; } } return false; diff --git a/cpukit/posix/src/pthreadcreate.c b/cpukit/posix/src/pthreadcreate.c index c5ca86d52e..d7f08a5527 100644 --- a/cpukit/posix/src/pthreadcreate.c +++ b/cpukit/posix/src/pthreadcreate.c @@ -190,14 +190,6 @@ int pthread_create( api->schedpolicy = schedpolicy; api->schedparam = schedparam; - /* - * This insures we evaluate the process-wide signals pending when we - * first run. - * - * NOTE: Since the thread starts with all unblocked, this is necessary. - */ - the_thread->do_post_task_switch_extension = true; - /* * POSIX threads are allocated and started in one operation. */ diff --git a/cpukit/posix/src/pthreadkill.c b/cpukit/posix/src/pthreadkill.c index 9b6bd408e0..6d96067049 100644 --- a/cpukit/posix/src/pthreadkill.c +++ b/cpukit/posix/src/pthreadkill.c @@ -63,10 +63,8 @@ int pthread_kill( (void) _POSIX_signals_Unblock_thread( the_thread, sig, NULL ); - the_thread->do_post_task_switch_extension = true; - if ( _ISR_Is_in_progress() && _Thread_Is_executing( the_thread ) ) - _ISR_Signals_to_thread_executing = true; + _Context_Switch_necessary = true; } _Thread_Enable_dispatch(); return 0; diff --git a/cpukit/posix/src/pthreadsigmask.c b/cpukit/posix/src/pthreadsigmask.c index 2fdc720282..c97e75a89e 100644 --- a/cpukit/posix/src/pthreadsigmask.c +++ b/cpukit/posix/src/pthreadsigmask.c @@ -65,7 +65,6 @@ int pthread_sigmask( if ( ~api->signals_blocked & (api->signals_pending | _POSIX_signals_Pending) ) { - _Thread_Executing->do_post_task_switch_extension = true; _Thread_Dispatch(); } -- cgit v1.2.3