lkml.org 
[lkml]   [2002]   [Aug]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
From
SubjectRe: atomic64_t proposal
Date
Andreas Schwab writes:
>
> Dean Nelson <dcn@sgi.com> writes:
>
> |> +#define ia64_atomic_add(i,v) \
> |> +({ \
> |> + __typeof__((v)->counter) _old, _new; \
> |> + CMPXCHG_BUGCHECK_DECL \
> |> + \
> |> + do { \
> |> + CMPXCHG_BUGCHECK(v); \
> |> + _old = atomic_read(v); \
> |> + _new = _old + (i); \
> |> + } while (ia64_cmpxchg("acq", (v), _old, _new, sizeof(*(v))) != _old); \
> |> + (__typeof__((v)->counter)) _new; /* return new value */ \
>
> What's the purpose of the cast here? The type of _new is already the
> right one.

You're right, the cast is meaningless and should be removed. It's an artifact
of a macro that had several iterations of development.

> |> #define atomic_add_return(i,v) \
> |> ((__builtin_constant_p(i) && \
> |> ( (i == 1) || (i == 4) || (i == 8) || (i == 16) \
> |> || (i == -1) || (i == -4) || (i == -8) || (i == -16))) \
> |> ? ia64_fetch_and_add(i, &(v)->counter) \
> |> - : ia64_atomic_add(i, v))
> |> + : ia64_atomic_add((i), (v)))
>
> The extra parens are useless.

Yep, they're useless. I had introduced them merely to be consistent with
how the other macros in asm-ia64/atomic.h were done (macros that I didn't
modify). But the parentheses can be removed.

Thanks for the corrections.
Dean

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2005-03-22 13:28    [W:0.029 / U:2.204 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site