[PATCH] remove #ifdef __KERNEL__ from atomic.h

STALE8789d

5 messages, 4 authors, 2002-09-26 · open the first message on its own page

[PATCH] remove #ifdef __KERNEL__ from atomic.h

From: Ben Stanley <hidden>
Date: 2002-09-25 05:11:16

Hi,

I was trying to compile sumji (formerly xtunes), which requires
libCommonC++. I found that libCommonC++ would not compile, because it
needs to use the atomic functions declared in include/asm-ppc/atomic.h .
However, this file does not declare these functions unless __KERNEL__ is
defined. I believe that this is incorrect.

I have checked the i386 and s390 versions of atomic.h and they declare
the atomic functions regardless of the status of the __KERNEL__ macro.
Therefore I propose that it should be removed from asm-ppc/atomic.h, and
have attached a patch to effect this.

With this patch applied, I am able to compile libCommonC++.

Ben Stanley.

Re: [PATCH] remove #ifdef __KERNEL__ from atomic.h

From: Ethan Benson <hidden>
Date: 2002-09-25 07:12:40

On Wed, Sep 25, 2002 at 03:11:16PM +1000, Ben Stanley wrote:
Hi,

I was trying to compile sumji (formerly xtunes), which requires
libCommonC++. I found that libCommonC++ would not compile, because it
needs to use the atomic functions declared in include/asm-ppc/atomic.h .
However, this file does not declare these functions unless __KERNEL__ is
defined. I believe that this is incorrect.
no libcommonc++ is broken for using kernel headers.

i think this has been discussed before, specically the atomic stuff.

--
Ethan Benson
http://www.alaska.net/~erbenson/

** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/

Re: [PATCH] remove #ifdef __KERNEL__ from atomic.h

From: Paul Mackerras <hidden>
Date: 2002-09-25 07:44:07

Ben Stanley writes:
I was trying to compile sumji (formerly xtunes), which requires
libCommonC++. I found that libCommonC++ would not compile, because it
needs to use the atomic functions declared in include/asm-ppc/atomic.h .
However, this file does not declare these functions unless __KERNEL__ is
defined. I believe that this is incorrect.
This has been gone over many times, user programs shouldn't be using
kernel headers.  I don't mind if you change /usr/include/asm/atomic.h,
that's a glibc header not a kernel header, but the #ifdef __KERNEL__
in the kernel header is there precisely to catch this sort of error.

(And of course /usr/include/asm should NOT be a symlink into the
kernel sources.)

Paul.

** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/

Re: [PATCH] remove #ifdef __KERNEL__ from atomic.h

From: "Benjamin Herrenschmidt" <benh@kernel.crashing.org>
Date: 2002-09-25 08:45:12

I was trying to compile sumji (formerly xtunes), which requires
libCommonC++. I found that libCommonC++ would not compile, because it
needs to use the atomic functions declared in include/asm-ppc/atomic.h .
However, this file does not declare these functions unless __KERNEL__ is
defined. I believe that this is incorrect.

I have checked the i386 and s390 versions of atomic.h and they declare
the atomic functions regardless of the status of the __KERNEL__ macro.
Therefore I propose that it should be removed from asm-ppc/atomic.h, and
have attached a patch to effect this.

With this patch applied, I am able to compile libCommonC++.
This is wrong. The definitions in asm-ppc/atomic.h belong to the
kernel only and are not guaranteed to work outside of the kernel
environement. Typically, the 4xx version use some errata workaround
macros that rely on some of the kernel's CONFIG_xxx.

You should implement your own version of the atomic ops in userland
(and you should do that for i386 and s390 as well, it's just wrong
to use the kernel versions like this). Also your implementation
should probably add the sync that is needed for workaround of some
PPC 4xx bugs (see the version in the linuxppc_2_4_devel tree)

Ben.


** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/

Re: [PATCH] remove #ifdef __KERNEL__ from atomic.h

From: Ben Stanley <hidden>
Date: 2002-09-26 00:47:03

To everybody who replied,

Thanks for the gentle explanations. I'll hassle the glibc people instead.

Ben Stanley.


** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help