2004-11-18 06:48:17

by Chuck Ebbert

[permalink] [raw]
Subject: Six archs are missing atomic_inc_return()

Six archs do not have the atomic_inc_return() macro as of 2.6.10-rc2:

cris
h8300
m32r
ppc
ppc64
s390

net/core/neighbour.c:neigh_alloc() uses this macro. Does that mean these
archs can't build network configs that use it?

(Also, some archs do not seem to parenthesize the macro enough. Only
sparc and parisc get it right.)


--Chuck Ebbert 18-Nov-04 01:28:59


2004-11-18 06:58:22

by Anton Blanchard

[permalink] [raw]
Subject: Re: Six archs are missing atomic_inc_return()


> Six archs do not have the atomic_inc_return() macro as of 2.6.10-rc2:
>
> cris
> h8300
> m32r
> ppc
> ppc64
> s390

Are you sure?

Anton

$ grep -l atomic_inc_return include/asm-*/atomic.h
include/asm-alpha/atomic.h
include/asm-arm26/atomic.h
include/asm-arm/atomic.h
include/asm-cris/atomic.h
include/asm-h8300/atomic.h
include/asm-i386/atomic.h
include/asm-ia64/atomic.h
include/asm-m32r/atomic.h
include/asm-m68k/atomic.h
include/asm-m68knommu/atomic.h
include/asm-mips/atomic.h
include/asm-parisc/atomic.h
include/asm-ppc64/atomic.h
include/asm-ppc/atomic.h
include/asm-s390/atomic.h
include/asm-sh64/atomic.h
include/asm-sh/atomic.h
include/asm-sparc64/atomic.h
include/asm-sparc/atomic.h
include/asm-v850/atomic.h
include/asm-x86_64/atomic.h

2004-11-18 23:19:52

by Chuck Ebbert

[permalink] [raw]
Subject: Re: Six archs are missing atomic_inc_return()

Anton wrote:

> $ grep -l atomic_inc_return include/asm-*/atomic.h


I was assuming all archs used a macro for this, so I used:

$ grep 'define atomic_inc_return' asm-*/atomic.h


But your grep could have found this:

/* FIXME: this arch does not have atomic_inc_return */

and returned a false positive.


What I need is a C-aware grep:

$ cgrep [--definition | --comment | --usage] atomic_inc_return asm-*/atomic.h

to search definitions, comments, and code body respectively.


--Chuck Ebbert 18-Nov-04 18:08:49

2004-11-19 04:48:53

by Andrew Morton

[permalink] [raw]
Subject: Re: Six archs are missing atomic_inc_return()

Chuck Ebbert <[email protected]> wrote:
>
> Six archs do not have the atomic_inc_return() macro as of 2.6.10-rc2:
>
> cris
> h8300
> m32r
> ppc
> ppc64
> s390

All of these architectures implement atomic_add_return(). So they all need

#define atomic_inc_return(v) atomic_add_return(1, v)

added to their atomic.h.

Wanna send a patch?

2004-11-19 06:32:45

by David Miller

[permalink] [raw]
Subject: Re: Six archs are missing atomic_inc_return()

On Thu, 18 Nov 2004 20:48:36 -0800
Andrew Morton <[email protected]> wrote:

> Chuck Ebbert <[email protected]> wrote:
> >
> > Six archs do not have the atomic_inc_return() macro as of 2.6.10-rc2:
> >
> > cris
> > h8300
> > m32r
> > ppc
> > ppc64
> > s390
>
> All of these architectures implement atomic_add_return(). So they all need
>
> #define atomic_inc_return(v) atomic_add_return(1, v)
>
> added to their atomic.h.
>
> Wanna send a patch?

Come again? They all seem to have it in current 2.6.x BK as far
as I can tell.

davem@nuts:/disk1/BK/sparc-2.6$ egrep atomic_inc_return include/asm-cris/atomic.h include/asm-h8300/atomic.h include/asm-m32r/atomic.h include/asm-ppc/atomic.h include/asm-ppc64/atomic.h include/asm-s390/atomic.h
include/asm-cris/atomic.h:extern __inline__ int atomic_inc_return(volatile atomic_t *v)
include/asm-h8300/atomic.h:static __inline__ int atomic_inc_return(atomic_t *v)
include/asm-h8300/atomic.h:#define atomic_inc(v) atomic_inc_return(v)
include/asm-h8300/atomic.h:#define atomic_inc_and_test(v) (atomic_inc_return(v) == 0)
include/asm-m32r/atomic.h: * atomic_inc_return - increment atomic variable and return it
include/asm-m32r/atomic.h:static inline int atomic_inc_return(atomic_t *v)
include/asm-m32r/atomic.h: "# atomic_inc_return \n\t"
include/asm-m32r/atomic.h:#define atomic_inc(v) ((void)atomic_inc_return(v))
include/asm-m32r/atomic.h:#define atomic_inc_and_test(v) (atomic_inc_return(v) == 0)
include/asm-ppc/atomic.h:static __inline__ int atomic_inc_return(atomic_t *v)
include/asm-ppc/atomic.h:"1: lwarx %0,0,%1 # atomic_inc_return\n\
include/asm-ppc/atomic.h:#define atomic_inc_and_test(v) (atomic_inc_return(v) == 0)
include/asm-ppc64/atomic.h:static __inline__ int atomic_inc_return(atomic_t *v)
include/asm-ppc64/atomic.h:"1: lwarx %0,0,%1 # atomic_inc_return\n\
include/asm-ppc64/atomic.h:#define atomic_inc_and_test(v) (atomic_inc_return(v) == 0)
include/asm-s390/atomic.h:static __inline__ int atomic_inc_return(volatile atomic_t * v)

2004-11-20 20:18:38

by Herbert Poetzl

[permalink] [raw]
Subject: Re: Six archs are missing atomic_inc_return()

On Thu, Nov 18, 2004 at 06:14:06PM -0500, Chuck Ebbert wrote:
> Anton wrote:
>
> > $ grep -l atomic_inc_return include/asm-*/atomic.h
>
>
> I was assuming all archs used a macro for this, so I used:
>
> $ grep 'define atomic_inc_return' asm-*/atomic.h
>
>
> But your grep could have found this:
>
> /* FIXME: this arch does not have atomic_inc_return */
>
> and returned a false positive.
>
>
> What I need is a C-aware grep:
>
> $ cgrep [--definition | --comment | --usage] atomic_inc_return asm-*/atomic.h
>
> to search definitions, comments, and code body respectively.

what about cscope or c-tags?

best,
Herbert

> --Chuck Ebbert 18-Nov-04 18:08:49
> -
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to [email protected]
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/