diff options
author | Joel Sherrill <joel.sherrill@OARcorp.com> | 2009-09-11 15:35:52 +0000 |
---|---|---|
committer | Joel Sherrill <joel.sherrill@OARcorp.com> | 2009-09-11 15:35:52 +0000 |
commit | 442eac699df1468fff4cfb2ff44b4cac5bfaac84 (patch) | |
tree | 77cb58ce5d870b617112757c1d51e7dec59bb8a1 /cpukit | |
parent | New. (diff) | |
download | rtems-442eac699df1468fff4cfb2ff44b4cac5bfaac84.tar.bz2 |
2009-09-11 Joel Sherrill <joel.sherrill@OARcorp.com>
* score/include/rtems/score/thread.h, score/src/threadhandler.c,
score/src/threadinitialize.c, score/src/threadtickletimeslice.c:
Disable thread protocol and scheduling capabilities not exercised
when POSIX or ITRON API is disabled.
Diffstat (limited to 'cpukit')
-rw-r--r-- | cpukit/ChangeLog | 7 | ||||
-rw-r--r-- | cpukit/score/include/rtems/score/thread.h | 19 | ||||
-rw-r--r-- | cpukit/score/src/threadhandler.c | 13 | ||||
-rw-r--r-- | cpukit/score/src/threadinitialize.c | 14 | ||||
-rw-r--r-- | cpukit/score/src/threadtickletimeslice.c | 14 |
5 files changed, 49 insertions, 18 deletions
diff --git a/cpukit/ChangeLog b/cpukit/ChangeLog index f0db75d2a1..90fe392c99 100644 --- a/cpukit/ChangeLog +++ b/cpukit/ChangeLog @@ -1,5 +1,12 @@ 2009-09-11 Joel Sherrill <joel.sherrill@OARcorp.com> + * score/include/rtems/score/thread.h, score/src/threadhandler.c, + score/src/threadinitialize.c, score/src/threadtickletimeslice.c: + Disable thread protocol and scheduling capabilities not exercised + when POSIX or ITRON API is disabled. + +2009-09-11 Joel Sherrill <joel.sherrill@OARcorp.com> + * score/include/rtems/score/object.h, score/inline/rtems/score/object.inl, score/src/objectgetnameasstring.c, score/src/objectidtoname.c, diff --git a/cpukit/score/include/rtems/score/thread.h b/cpukit/score/include/rtems/score/thread.h index a8edc950d2..5d3dc43634 100644 --- a/cpukit/score/include/rtems/score/thread.h +++ b/cpukit/score/include/rtems/score/thread.h @@ -6,7 +6,7 @@ */ /* - * COPYRIGHT (c) 1989-2008. + * COPYRIGHT (c) 1989-2009. * On-Line Applications Research Corporation (OAR). * * The license and distribution terms for this file may be @@ -27,6 +27,15 @@ */ /**@{*/ +#if defined(RTEMS_POSIX_API) || defined(RTEMS_ITRON_API) + #define RTEMS_SCORE_THREAD_ENABLE_EXHAUST_TIMESLICE +#endif + +#if defined(RTEMS_POSIX_API) + #define RTEMS_SCORE_THREAD_ENABLE_SCHEDULER_CALLOUT +#endif + + #ifdef __cplusplus extern "C" { #endif @@ -139,8 +148,12 @@ typedef Thread ( *Thread_Entry_both_numeric_first )( Thread_Entry_numeric_type, typedef enum { THREAD_CPU_BUDGET_ALGORITHM_NONE, THREAD_CPU_BUDGET_ALGORITHM_RESET_TIMESLICE, - THREAD_CPU_BUDGET_ALGORITHM_EXHAUST_TIMESLICE, - THREAD_CPU_BUDGET_ALGORITHM_CALLOUT + #if defined(RTEMS_SCORE_THREAD_ENABLE_EXHAUST_TIMESLICE) + THREAD_CPU_BUDGET_ALGORITHM_EXHAUST_TIMESLICE, + #endif + #if defined(RTEMS_SCORE_THREAD_ENABLE_SCHEDULER_CALLOUT) + THREAD_CPU_BUDGET_ALGORITHM_CALLOUT + #endif } Thread_CPU_budget_algorithms; /** This type defines the Thread Control Block structure. diff --git a/cpukit/score/src/threadhandler.c b/cpukit/score/src/threadhandler.c index 762e26c82b..cf39656487 100644 --- a/cpukit/score/src/threadhandler.c +++ b/cpukit/score/src/threadhandler.c @@ -149,12 +149,15 @@ void _Thread_Handler( void ) (*(Thread_Entry_numeric) executing->Start.entry_point)( executing->Start.numeric_argument ); - } else if ( executing->Start.prototype == THREAD_START_POINTER ) { - executing->Wait.return_argument = - (*(Thread_Entry_pointer) executing->Start.entry_point)( - executing->Start.pointer_argument - ); } + #if defined(RTEMS_POSIX_API) + else if ( executing->Start.prototype == THREAD_START_POINTER ) { + executing->Wait.return_argument = + (*(Thread_Entry_pointer) executing->Start.entry_point)( + executing->Start.pointer_argument + ); + } + #endif #if defined(FUNCTIONALITY_NOT_CURRENTLY_USED_BY_ANY_API) else if ( executing->Start.prototype == THREAD_START_BOTH_POINTER_FIRST ) { executing->Wait.return_argument = diff --git a/cpukit/score/src/threadinitialize.c b/cpukit/score/src/threadinitialize.c index f4b9660526..c41983fc34 100644 --- a/cpukit/score/src/threadinitialize.c +++ b/cpukit/score/src/threadinitialize.c @@ -166,11 +166,15 @@ bool _Thread_Initialize( case THREAD_CPU_BUDGET_ALGORITHM_NONE: case THREAD_CPU_BUDGET_ALGORITHM_RESET_TIMESLICE: break; - case THREAD_CPU_BUDGET_ALGORITHM_EXHAUST_TIMESLICE: - the_thread->cpu_time_budget = _Thread_Ticks_per_timeslice; - break; - case THREAD_CPU_BUDGET_ALGORITHM_CALLOUT: - break; + #if defined(RTEMS_SCORE_THREAD_ENABLE_EXHAUST_TIMESLICE) + case THREAD_CPU_BUDGET_ALGORITHM_EXHAUST_TIMESLICE: + the_thread->cpu_time_budget = _Thread_Ticks_per_timeslice; + break; + #endif + #if defined(RTEMS_SCORE_THREAD_ENABLE_SCHEDULER_CALLOUT) + case THREAD_CPU_BUDGET_ALGORITHM_CALLOUT: + break; + #endif } the_thread->Start.isr_level = isr_level; diff --git a/cpukit/score/src/threadtickletimeslice.c b/cpukit/score/src/threadtickletimeslice.c index c0e87e90ac..ab6469b3c3 100644 --- a/cpukit/score/src/threadtickletimeslice.c +++ b/cpukit/score/src/threadtickletimeslice.c @@ -76,16 +76,20 @@ void _Thread_Tickle_timeslice( void ) break; case THREAD_CPU_BUDGET_ALGORITHM_RESET_TIMESLICE: - case THREAD_CPU_BUDGET_ALGORITHM_EXHAUST_TIMESLICE: + #if defined(RTEMS_SCORE_THREAD_ENABLE_EXHAUST_TIMESLICE) + case THREAD_CPU_BUDGET_ALGORITHM_EXHAUST_TIMESLICE: + #endif if ( (int)(--executing->cpu_time_budget) <= 0 ) { _Thread_Reset_timeslice(); executing->cpu_time_budget = _Thread_Ticks_per_timeslice; } break; - case THREAD_CPU_BUDGET_ALGORITHM_CALLOUT: - if ( --executing->cpu_time_budget == 0 ) - (*executing->budget_callout)( executing ); - break; + #if defined(RTEMS_SCORE_THREAD_ENABLE_SCHEDULER_CALLOUT) + case THREAD_CPU_BUDGET_ALGORITHM_CALLOUT: + if ( --executing->cpu_time_budget == 0 ) + (*executing->budget_callout)( executing ); + break; + #endif } } |