From 3ba0750fd1998c0ca129f06a0b8deebeae6075f4 Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Mon, 6 Jul 2009 17:59:34 +0000 Subject: 2009-07-06 Joel Sherrill * posix/src/psxtransschedparam.c: Restructure to avoid untestable code being generated by switch. --- cpukit/ChangeLog | 5 ++++ cpukit/posix/src/psxtransschedparam.c | 46 +++++++++++++++++------------------ 2 files changed, 28 insertions(+), 23 deletions(-) (limited to 'cpukit') diff --git a/cpukit/ChangeLog b/cpukit/ChangeLog index 956e7d5e09..aed65d2879 100644 --- a/cpukit/ChangeLog +++ b/cpukit/ChangeLog @@ -1,3 +1,8 @@ +2009-07-06 Joel Sherrill + + * posix/src/psxtransschedparam.c: Restructure to avoid untestable code + being generated by switch. + 2009-07-06 Joel Sherrill * score/src/coremsgsubmit.c: Move impossible case inside an RTEMS_DEBUG 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; } -- cgit v1.2.3