[PATCH v2 4/5] score: Turn thread lock into thread wait lock

Sebastian Huber sebastian.huber at embedded-brains.de
Wed Jul 27 05:36:10 UTC 2016



On 27/07/16 06:43, Chris Johns wrote:
> My comments are mixed into the patch.
>
> On 26/07/2016 19:20, Sebastian Huber wrote:
[...]

>> +#if defined(RTEMS_SMP)
>> +  /**
>> +   * @brief Thread wait lock control block.
>> +   *
>> +   * Parts of the thread wait information is protected by the thread 
>> wait
> * Parts of the thread wait information are protected by the thread wait
>> +   * default lock and additionally a thread queue lock in case the 
>> thread
>> +   * currently blocks on a thread queue.
> ? * is blocked on a thread queue.
>> +   *
>> +   * The thread wait lock mechanism protects the following thread 
>> variables
>> +   *  - POSIX_API_Control::Attributes,
>> +   *  - Thread_Control::current_priority,
>> +   *  - Thread_Control::Wait::Lock::Pending_requests,
>> +   *  - Thread_Control::Wait::queue, and
>> +   *  - Thread_Control::Wait::operations.
>> +   *
>> +   * @see _Thread_Wait_acquire(), _Thread_Wait_release(), 
>> _Thread_Wait_claim()
>> +   *   and _Thread_Wait_restore_default().
>> +   */
>> +  struct {
>> +    /**
>> +     * @brief Thread wait default lock.
>> +     */
>> +    ISR_lock_Control Default;
>> +
>> +    /**
>> +     * @brief The pending thread wait lock acquire or tranquilize 
>> requests in
>
> What does 'tranquilize' mean here? I think this need some more detail.

I added a reference to _Thread_Wait_tranquilize().

>
>> +     * case the thread is blocked on a thread queue.
>> +     */
>> +    Chain_Control Pending_requests;
>> +  } Lock;
>> +#endif
>> +
>> +  /**
>> +   * @brief The current thread queue.
>> +   *
>> +   * In case this field is @c NULL, then the thread is not blocked 
>> on a thread
>
> ? * If this field is @c NULL the thread is not blocked on a thread
>
>> +   * queue.  This field is protected by the thread wait default lock.
>> +   *
>> +   * @see _Thread_Wait_claim().
>> +   */
>> +  Thread_queue_Queue *queue;
>> +
>>     /**
>>      * @brief The current thread queue operations.
>>      *
>> -   * This field is protected by the thread lock.
>> +   * This field is protected by the thread lock wait default lock.
>>      *
>> -   * @see _Thread_Lock_set() and _Thread_Wait_set_operations().
>> +   * @see _Thread_Wait_claim().
>>      */
>>     const Thread_queue_Operations *operations;
>>
>> @@ -639,66 +671,6 @@ typedef struct  {
>>     void *        control;
>>   }Thread_Capture_control;
>>
>> -#if defined(RTEMS_SMP)
>> -/**
>> - * @brief Thread lock control.
>> - *
>> - * The thread lock is either the default lock or the lock of the 
>> resource on
>> - * which the thread is currently blocked.  The generation number 
>> takes care
>> - * that the up to date lock is used.  Only resources using fine 
>> grained locking
>
> ? ...  The generation number make sure an to date lock is used. ...

This part is removed by the patch.

[...]
>> +
>> +/**
>> + * @brief Tranquilizes a thread wait on a thread queue procedure.
>
> Again I am not sure what "tranquilizes" means. My dictionary states:
>
> "To render tranquil; to allay when agitated; to compose; to
>  make calm and peaceful; as, to tranquilize a state disturbed
>  by factions or civil commotions; to tranquilize the mind."
>
> Is this thread agitated? Is this making the thread calmer? Are you 
> sedating the thread? :)

After the violent blocking procedure you make the thread calm and 
peaceful again so that it can carry out its normal work.

>
> Is quiesce or silent better?

I am open for suggestions, but I think quiesce and silent is not better 
here.

[...]

-- 
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.huber at embedded-brains.de
PGP     : Public key available on request.

Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.



More information about the devel mailing list