[PATCH v2 4/4] posix/src/mutexinit.c: Reorder to make priority a scoped variable
Gedare Bloom
gedare at rtems.org
Thu Apr 27 20:40:53 UTC 2017
On Wed, Apr 26, 2017 at 10:59 PM, Joel Sherrill <joel at rtems.org> wrote:
>
>
> On Wed, Apr 26, 2017 at 9:02 PM, Gedare Bloom <gedare at rtems.org> wrote:
>>
>> I might rather see the switch refactored to an if-then block, since it
>> has quite a bit of structure to it now.
>>
>
> How about it includes all cases?
>
It is better written as an if-else the way it looks now. The switch is
unnecessary
> --joel
>
>>
>> On Wed, Apr 26, 2017 at 4:42 PM, Joel Sherrill <joel at rtems.org> wrote:
>> > ---
>> > cpukit/posix/src/mutexinit.c | 41
>> > +++++++++++++++++++----------------------
>> > 1 file changed, 19 insertions(+), 22 deletions(-)
>> >
>> > diff --git a/cpukit/posix/src/mutexinit.c b/cpukit/posix/src/mutexinit.c
>> > index 47e0bcb..cdbba11 100644
>> > --- a/cpukit/posix/src/mutexinit.c
>> > +++ b/cpukit/posix/src/mutexinit.c
>> > @@ -38,10 +38,6 @@ int pthread_mutex_init(
>> > const pthread_mutexattr_t *the_attr;
>> > POSIX_Mutex_Protocol protocol;
>> > const Scheduler_Control *scheduler;
>> > - Priority_Control priority;
>> > -
>> > - /* initialize to avoid warning for used uninitialized */
>> > - priority = 0;
>> >
>> > if ( attr ) the_attr = attr;
>> > else the_attr = &_POSIX_Mutex_Default_attributes;
>> > @@ -109,23 +105,6 @@ int pthread_mutex_init(
>> > }
>> > #endif
>> >
>> > - if ( protocol == POSIX_MUTEX_PRIORITY_CEILING ) {
>> > - int prio_ceiling;
>> > - bool valid;
>> > -
>> > - scheduler = _Thread_Scheduler_get_home( _Thread_Get_executing() );
>> > - prio_ceiling = the_attr->prio_ceiling;
>> > -
>> > - if ( prio_ceiling == INT_MAX ) {
>> > - prio_ceiling = _POSIX_Priority_Get_maximum( scheduler );
>> > - }
>> > -
>> > - priority = _POSIX_Priority_To_core( scheduler, prio_ceiling, &valid
>> > );
>> > - if ( !valid ) {
>> > - return EINVAL;
>> > - }
>> > - }
>> > -
>> > the_mutex = _POSIX_Mutex_Allocate();
>> >
>> > if ( !the_mutex ) {
>> > @@ -137,9 +116,27 @@ int pthread_mutex_init(
>> > the_mutex->is_recursive = ( the_attr->type == PTHREAD_MUTEX_RECURSIVE
>> > );
>> >
>> > switch ( protocol ) {
>> > - case POSIX_MUTEX_PRIORITY_CEILING:
>> > + case POSIX_MUTEX_PRIORITY_CEILING: {
>> > + int prio_ceiling;
>> > + bool valid;
>> > + Priority_Control priority;
>> > +
>> > + scheduler = _Thread_Scheduler_get_home( _Thread_Get_executing()
>> > );
>> > + prio_ceiling = the_attr->prio_ceiling;
>> > +
>> > + if ( prio_ceiling == INT_MAX ) {
>> > + prio_ceiling = _POSIX_Priority_Get_maximum( scheduler );
>> > + }
>> > +
>> > + priority = _POSIX_Priority_To_core( scheduler, prio_ceiling,
>> > &valid );
>> > + if ( !valid ) {
>> > + _POSIX_Mutex_Free(the_mutex);
>> > + _Objects_Allocator_unlock();
>> > + return EINVAL;
>> > + }
>> > _CORE_ceiling_mutex_Initialize( &the_mutex->Mutex, scheduler,
>> > priority );
>> > break;
>> > + }
>> > default:
>> > _Assert(
>> > the_mutex->protocol == POSIX_MUTEX_NO_PROTOCOL
>> > --
>> > 1.8.3.1
>> >
>> > _______________________________________________
>> > devel mailing list
>> > devel at rtems.org
>> > http://lists.rtems.org/mailman/listinfo/devel
>
>
More information about the devel
mailing list