lkml.org 
[lkml]   [2014]   [May]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH v10 07/19] qspinlock: Use a simple write to grab the lock, if applicable
On 05/08/2014 03:00 PM, Peter Zijlstra wrote:
> On Wed, May 07, 2014 at 11:01:35AM -0400, Waiman Long wrote:
>> @@ -94,23 +94,29 @@ static inline struct mcs_spinlock *decode_tail(u32 tail)
>> * can allow better optimization of the lock acquisition for the pending
>> * bit holder.
>> */
>> -#if _Q_PENDING_BITS == 8
>> -
>> struct __qspinlock {
>> union {
>> atomic_t val;
>> - struct {
>> #ifdef __LITTLE_ENDIAN
>> + u8 locked;
>> + struct {
>> u16 locked_pending;
>> u16 tail;
>> + };
>> #else
>> + struct {
>> u16 tail;
>> u16 locked_pending;
>> -#endif
>> };
>> + struct {
>> + u8 reserved[3];
>> + u8 locked;
>> + };
>> +#endif
>> };
>> };
>>
>> +#if _Q_PENDING_BITS == 8
> That doesn't make sense, that struct __qspinlock only makes sense when
> _Q_PENDING_BITS == 8.

I need to use the locked field (the 2nd strcut) in get_qlock() where I
grab the lock by setting the lock byte directly. Since the endian-aware
structure is already in place, I reused it and have to expose it even
when _Q_PENDING_BITS isn't 8. I will document that more clearly in the
code to avoid this confusion.

-Longman


\
 
 \ /
  Last update: 2014-05-10 03:21    [W:0.291 / U:0.024 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site