On Wed, May 21, 2014 at 10:41 AM, Sebastian Huber <sebastian.hu...@embedded-brains.de> wrote: > Hello, > > you can create a Classic API semaphore using the Priority Ceiling Protocol > which is initially locked by the creating task. In this case the creating > task is not elevated to the ceiling priority: > > CORE_mutex_Status _CORE_mutex_Initialize( > CORE_mutex_Control *the_mutex, > Thread_Control *executing, > const CORE_mutex_Attributes *the_mutex_attributes, > bool initially_locked > ) > { > > /* Add this to the RTEMS environment later ????????? > rtems_assert( initial_lock == CORE_MUTEX_LOCKED || > initial_lock == CORE_MUTEX_UNLOCKED ); > */ > > the_mutex->Attributes = *the_mutex_attributes; > > if ( initially_locked ) { > the_mutex->nest_count = 1; > the_mutex->holder = executing; > if ( _CORE_mutex_Is_inherit_priority( &the_mutex->Attributes ) || > _CORE_mutex_Is_priority_ceiling( &the_mutex->Attributes ) ) { > > if ( executing->current_priority < > the_mutex->Attributes.priority_ceiling ) > return CORE_MUTEX_STATUS_CEILING_VIOLATED; Looks like this check ensures the executing thread has got priority at least at the priority_ceiling. If it does not, the mutex is not initialized.
-Gedare > > Is this working as intended? > > -- > Sebastian Huber, embedded brains GmbH > > Address : Dornierstr. 4, D-82178 Puchheim, Germany > Phone : +49 89 189 47 41-16 > Fax : +49 89 189 47 41-09 > E-Mail : sebastian.hu...@embedded-brains.de > PGP : Public key available on request. > > Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG. > _______________________________________________ > rtems-devel mailing list > rtems-devel@rtems.org > http://www.rtems.org/mailman/listinfo/rtems-devel _______________________________________________ rtems-devel mailing list rtems-devel@rtems.org http://www.rtems.org/mailman/listinfo/rtems-devel