2009-10-20 13:43:06

by Stephan von Krawczynski

[permalink] [raw]
Subject: include/asm-generic/int-ll64.h kernel 2.6.31.4

Hello all,

I lately compiled some app that stumbled across this, and someone smarter than
me should judge if this is right or wrong:


* asm-generic/int-ll64.h
*
* Integer declarations for architectures which use "long long"
* for 64-bit types.
*/

#ifndef _ASM_GENERIC_INT_LL64_H
#define _ASM_GENERIC_INT_LL64_H

#include <asm/bitsperlong.h>
^^^^^^^^^^^^^^^^^^^^^^^^^^^^


Is it correct to include from linked "asm" instead of asm-generic ?

My link goes to "asm-x86" but for some reason asm-generic/types.h is included
which ends at int-ll64.h trying to include a not existing bitsperlong.h from
directory asm-x86.

--
Regards,
Stephan


2009-10-22 14:30:07

by Arnd Bergmann

[permalink] [raw]
Subject: Re: include/asm-generic/int-ll64.h kernel 2.6.31.4

On Tuesday 20 October 2009, Stephan von Krawczynski wrote:
> I lately compiled some app that stumbled across this, and someone smarter than
> me should judge if this is right or wrong:
>
>
> * asm-generic/int-ll64.h
> *
> * Integer declarations for architectures which use "long long"
> * for 64-bit types.
> */
>
> #ifndef _ASM_GENERIC_INT_LL64_H
> #define _ASM_GENERIC_INT_LL64_H
>
> #include <asm/bitsperlong.h>
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>
>
> Is it correct to include from linked "asm" instead of asm-generic ?
>
> My link goes to "asm-x86" but for some reason asm-generic/types.h is included
> which ends at int-ll64.h trying to include a not existing bitsperlong.h from
> directory asm-x86.

Hi Stephan,

Most likely you are using the kernel headers in an unsupported way, like
trying to point to $(HOME)/linux-2.6/include for include files when building
an application.

Please see http://kernelnewbies.org/KernelHeaders for how to fix that.

Arnd <><

2009-10-22 16:21:08

by Stephan von Krawczynski

[permalink] [raw]
Subject: Re: include/asm-generic/int-ll64.h kernel 2.6.31.4

On Thu, 22 Oct 2009 16:29:59 +0200
Arnd Bergmann <[email protected]> wrote:

> On Tuesday 20 October 2009, Stephan von Krawczynski wrote:
> > I lately compiled some app that stumbled across this, and someone smarter than
> > me should judge if this is right or wrong:
> >
> >
> > * asm-generic/int-ll64.h
> > *
> > * Integer declarations for architectures which use "long long"
> > * for 64-bit types.
> > */
> >
> > #ifndef _ASM_GENERIC_INT_LL64_H
> > #define _ASM_GENERIC_INT_LL64_H
> >
> > #include <asm/bitsperlong.h>
> > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> >
> >
> > Is it correct to include from linked "asm" instead of asm-generic ?
> >
> > My link goes to "asm-x86" but for some reason asm-generic/types.h is included
> > which ends at int-ll64.h trying to include a not existing bitsperlong.h from
> > directory asm-x86.
>
> Hi Stephan,
>
> Most likely you are using the kernel headers in an unsupported way, like
> trying to point to $(HOME)/linux-2.6/include for include files when building
> an application.
>
> Please see http://kernelnewbies.org/KernelHeaders for how to fix that.
>
> Arnd <><

I am the wrong person to tell that, the story belongs to keepalived.
Nevertheless reading other header files in the same dir makes me think that
pointing to "asm" instead of "asm-generic" looks flakey, or why do others
point to -generic then?

--
Regards,
Stephan

2009-10-22 18:38:10

by Sam Ravnborg

[permalink] [raw]
Subject: Re: include/asm-generic/int-ll64.h kernel 2.6.31.4

> > On Tuesday 20 October 2009, Stephan von Krawczynski wrote:
> > > I lately compiled some app that stumbled across this, and someone smarter than
> > > me should judge if this is right or wrong:
> > >
> > >
> > > * asm-generic/int-ll64.h
> > > *
> > > * Integer declarations for architectures which use "long long"
> > > * for 64-bit types.
> > > */
> > >
> > > #ifndef _ASM_GENERIC_INT_LL64_H
> > > #define _ASM_GENERIC_INT_LL64_H
> > >
> > > #include <asm/bitsperlong.h>
> > > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> > >
> > >
> > > Is it correct to include from linked "asm" instead of asm-generic ?
> > >
> > > My link goes to "asm-x86" but for some reason asm-generic/types.h is included
> > > which ends at int-ll64.h trying to include a not existing bitsperlong.h from
> > > directory asm-x86.
> >
> > Hi Stephan,
> >
> > Most likely you are using the kernel headers in an unsupported way, like
> > trying to point to $(HOME)/linux-2.6/include for include files when building
> > an application.
> >
> > Please see http://kernelnewbies.org/KernelHeaders for how to fix that.
> >
> > Arnd <><
>
> I am the wrong person to tell that, the story belongs to keepalived.
keepalived - thats the application you try to build?
Check your settings of CFLAGS and do so for keepalivd too.
As Arnd tells you yhe wong kernel headers are used.
We cannot fix that for you - but you can patch it yourself or
ask keepalived folks to do so.


> Nevertheless reading other header files in the same dir makes me think that
> pointing to "asm" instead of "asm-generic" looks flakey, or why do others
> point to -generic then?
Look closer...
that file may have some arch specific things so you _must_ do the
asm include.
If you look at x86 you will see that the x86 specific version
of said file specify the value of __BITS_PER_LONG.
and that value is again dependent on your target (32 or 64 bit).

Sam