summaryrefslogtreecommitdiffstats
path: root/cpukit
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>2009-09-11 15:35:52 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>2009-09-11 15:35:52 +0000
commit442eac699df1468fff4cfb2ff44b4cac5bfaac84 (patch)
tree77cb58ce5d870b617112757c1d51e7dec59bb8a1 /cpukit
parentNew. (diff)
downloadrtems-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/ChangeLog7
-rw-r--r--cpukit/score/include/rtems/score/thread.h19
-rw-r--r--cpukit/score/src/threadhandler.c13
-rw-r--r--cpukit/score/src/threadinitialize.c14
-rw-r--r--cpukit/score/src/threadtickletimeslice.c14
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
}
}