diff options
-rw-r--r-- | cpukit/ChangeLog | 5 | ||||
-rw-r--r-- | cpukit/posix/src/psxtransschedparam.c | 46 |
2 files changed, 28 insertions, 23 deletions
diff --git a/cpukit/ChangeLog b/cpukit/ChangeLog index 956e7d5e09..aed65d2879 100644 --- a/cpukit/ChangeLog +++ b/cpukit/ChangeLog @@ -1,5 +1,10 @@ 2009-07-06 Joel Sherrill <joel.sherrill@OARcorp.com> + * posix/src/psxtransschedparam.c: Restructure to avoid untestable code + being generated by switch. + +2009-07-06 Joel Sherrill <joel.sherrill@OARcorp.com> + * score/src/coremsgsubmit.c: Move impossible case inside an RTEMS_DEBUG conditional. diff --git a/cpukit/posix/src/psxtransschedparam.c b/cpukit/posix/src/psxtransschedparam.c index 8e91af75d4..0940d67b5b 100644 --- a/cpukit/posix/src/psxtransschedparam.c +++ b/cpukit/posix/src/psxtransschedparam.c @@ -33,33 +33,33 @@ int _POSIX_Thread_Translate_sched_param( *budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_NONE; *budget_callout = NULL; - switch ( policy ) { - case SCHED_OTHER: - *budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_RESET_TIMESLICE; - break; - - case SCHED_FIFO: - *budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_NONE; - break; - - case SCHED_RR: - *budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_EXHAUST_TIMESLICE; - break; + if ( policy == SCHED_OTHER ) { + *budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_RESET_TIMESLICE; + return 0; + } - case SCHED_SPORADIC: - *budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_CALLOUT; - *budget_callout = _POSIX_Threads_Sporadic_budget_callout; + if ( policy == SCHED_FIFO ) { + *budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_NONE; + return 0; + } - if ( _Timespec_To_ticks( ¶m->ss_replenish_period ) < - _Timespec_To_ticks( ¶m->ss_initial_budget ) ) - return EINVAL; + if ( policy == SCHED_RR ) { + *budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_EXHAUST_TIMESLICE; + return 0; + } - if ( !_POSIX_Priority_Is_valid( param->ss_low_priority ) ) - return EINVAL; - break; + if ( policy == SCHED_SPORADIC ) { + if ( _Timespec_To_ticks( ¶m->ss_replenish_period ) < + _Timespec_To_ticks( ¶m->ss_initial_budget ) ) + return EINVAL; - default: + if ( !_POSIX_Priority_Is_valid( param->ss_low_priority ) ) return EINVAL; + + *budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_CALLOUT; + *budget_callout = _POSIX_Threads_Sporadic_budget_callout; + return 0; } - return 0; + + return EINVAL; } |