lkml.org 
[lkml]   [2010]   [Nov]   [13]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH 01/20] x86/ticketlock: clean up types and accessors
    On Wed, Nov 03, 2010 at 10:59:42AM -0400, Jeremy Fitzhardinge wrote:
    ...
    > static __always_inline void __ticket_spin_lock(arch_spinlock_t *lock)
    > {
    >- int inc = 0x00010000;
    >- int tmp;
    >+ unsigned inc = 1 << TICKET_SHIFT;
    >+ unsigned tmp;

    Please don't use old implicit-int.

    >
    >- return (((tmp >> TICKET_SHIFT) - tmp) & ((1 << TICKET_SHIFT) - 1)) > 1;
    >+ return ((tmp.tail - tmp.head) & TICKET_MASK) > 1;


    There is a type promotion here.


    > }
    >
    > #ifndef CONFIG_PARAVIRT_SPINLOCKS
    >diff --git a/arch/x86/include/asm/spinlock_types.h b/arch/x86/include/asm/spinlock_types.h
    >index dcb48b2..4582640 100644
    >--- a/arch/x86/include/asm/spinlock_types.h
    >+++ b/arch/x86/include/asm/spinlock_types.h
    >@@ -5,11 +5,27 @@
    > # error "please don't include this file directly"
    > #endif
    >
    >+#include <linux/types.h>
    >+
    >+#if (CONFIG_NR_CPUS < 256)
    >+typedef u8 __ticket_t;
    >+#else
    >+typedef u16 __ticket_t;
    >+#endif
    >+
    >+#define TICKET_SHIFT (sizeof(__ticket_t) * 8)
    >+#define TICKET_MASK ((1 << TICKET_SHIFT) - 1)


    So here you may need to cast the result to __ticket_t.


    Thanks.


    \
     
     \ /
      Last update: 2010-11-13 10:57    [W:0.021 / U:3.428 seconds]
    ©2003-2017 Jasper Spaans. hosted at Digital OceanAdvertise on this site