Jan Kiszka wrote:
> Gilles Chanteperdrix wrote:
>> Jan Kiszka wrote:
>>> Gilles Chanteperdrix wrote:
>>>> Jan Kiszka wrote:
>>>>> @@ -230,18 +230,20 @@ static inline int mutex_save_count(xnthr
>>>>>  
>>>>>   mutex = shadow->mutex;
>>>>>  
>>>>> - if (clear_claimed(xnarch_atomic_intptr_get(mutex->owner)) != cur)
>>>>> + if (clear_claimed(xnarch_atomic_get(mutex->owner)) !=
>>>>> +     xnthread_handle(cur))
>>>>>           return EPERM;
>>>>>  
>>>>>   *count_ptr = shadow->lockcnt;
>>>>>  
>>>>> - if (likely(xnarch_atomic_intptr_cmpxchg(mutex->owner, cur, NULL) == 
>>>>> cur))
>>>>> + if (likely(xnarch_atomic_cmpxchg(mutex->owner, cur, XN_NO_HANDLE) ==
>>>>> +            xnthread_handle(cur)))
>>>>>           return 0;
>>>>>  
>>>>>   owner = xnsynch_wakeup_one_sleeper(&mutex->synchbase);
>>>>> - xnarch_atomic_intptr_set
>>>>> -         (mutex->owner,
>>>>> -          set_claimed(owner,xnsynch_nsleepers(&mutex->synchbase)));
>>>>> + xnarch_atomic_set(mutex->owner,
>>>>> +                   set_claimed(xnthread_handle(owner),
>>>>> +                               xnsynch_nsleepers(&mutex->synchbase)));
>>>> Ok. Can we avoid xnthread_handle() everywhere by storing its result in a
>>>> local variable and reusing this local variable, here and in the other
>>>> functions where xnthread_handle is used multiple times ?
>>> True for 'cur' here (will fix), but the other case have already been
>>> optimized as far as possible (i.e. within the respective scope).
>> I have found several other spots where xnthread_handle is called
>> multiple times in the same function. mutex_unlock comes to my mind.
> 
> Please point me to the concrete spot. I went again through all
> xnthread_handle instances in this patch, checking that they aren't
> needed due to owner changes, but only found the one above. Specifically
> pthread_mutex_unlock, pse51_mutex_unlock_internal and
> __pthread_mutex_unlock have only a single reference or reference
> different threads.

Ok. I had grepped xnthread_handle and found that it was used twice in
mutex_unlock, but did not checked if it was used for the same thread.


-- 
                                                 Gilles.

_______________________________________________
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core

Reply via email to