[oe] Strange header file error

E Robertson e.robertson.svg at gmail.com
Tue Jul 15 15:06:16 UTC 2008


On Mon, Jul 14, 2008 at 9:06 PM, Khem Raj <raj.khem at gmail.com> wrote:
>
>
> On Mon, 2008-07-14 at 14:58 -0500, E Robertson wrote:
>> Hi All,
>> I'm trying to explain this pthread.h header file error.
>> I include this header file in my program. The snip of interest is this:
>>
>> #ifndef _PTHREAD_H
>> #define _PTHREAD_H  1
>>
>> #include <features.h>
>>
>> #include <sched.h>
>> #include <time.h>
>>
>> #define __need_sigset_t
>> #include <signal.h>
>> #include <bits/pthreadtypes.h>
>> #include <bits/initspin.h>
>>
>> __BEGIN_DECLS
>>
>> /* Initializers.  */
>>
>> #define PTHREAD_MUTEX_INITIALIZER \
>>   {0, 0, 0, PTHREAD_MUTEX_ADAPTIVE_NP, __LOCK_INITIALIZER}
>> #ifdef __USE_GNU
>> # define PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP \
>>   {0, 0, 0, PTHREAD_MUTEX_RECURSIVE_NP, __LOCK_INITIALIZER}
>> # define PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP \
>>   {0, 0, 0, PTHREAD_MUTEX_ERRORCHECK_NP, __LOCK_INITIALIZER}
>> # define PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP \
>>   {0, 0, 0, PTHREAD_MUTEX_ADAPTIVE_NP, __LOCK_INITIALIZER}
>> #endif
>>
>>
>> This is included in another header file where I place some #ifdef
>> statements for  _PTHREAD_H,
>> PTHREAD_MUTEX_INITIALIZER, PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP, and
>> __USE_GNU.
>> I also defined __USE_GNU just before the header file and none of these
>> are redefined anywhere else.
>>
>> >From this I notice all these defines are valid and present _except_
>> PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP.
>> I haven't figured out why this is so wired I don't see any possible
>> reason how this could be possible.
>> Am I out of my mind here? Is this really possible? Unless my
>> arm-uclibc is doing something strange, I don't see how this could be.
>> Anyone seen this before?  Thanks much.
>>
>> _______________________________________________
>> Openembedded-devel mailing list
>> Openembedded-devel at lists.openembedded.org
>> http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-devel
>
>
>
>
> Its not clear from your email what you might be facing. You can
> preprocess your source file with -E and see whats getting included
>
> what happens when you use  -D_GNU_SOURCE ?

I've always used -D_GNU_SOURCE to get around the problem but "why?" is
the question I'm trying to answer.
Clearly USE_GNU is defined so the only way I can try to determine
problem is to dig deeper.
I must point out however that if I use I define _GNU_SOURCE just
before the pthread.h header file is included
I get the same result (as oppose to -D_GNU_SOURCE in the cc path).

I tried the -E option and it appears that all the necessary files are
included. I don't see anything unusual.
These are the header files included:
/opt/OE/stuff/tmp/staging/arm-linux-uclibc/usr/include/stdio.h \
  /opt/OE/stuff/tmp/staging/arm-linux-uclibc/usr/include/features.h \
  /opt/OE/stuff/tmp/staging/arm-linux-uclibc/usr/include/bits/uClibc_config.h \
  /opt/OE/stuff/tmp/staging/arm-linux-uclibc/usr/include/bits/uClibc_arch_features.h
\
  /opt/OE/stuff/tmp/staging/arm-linux-uclibc/usr/include/sys/cdefs.h \
  /opt/OE/stuff/tmp/staging/arm-linux-uclibc/usr/include/bits/types.h \
  /opt/OE/stuff/tmp/staging/arm-linux-uclibc/usr/include/bits/wordsize.h \
  /opt/OE/stuff/tmp/staging/arm-linux-uclibc/usr/include/bits/kernel_types.h \
  /opt/OE/stuff/tmp/staging/arm-linux-uclibc/usr/include/bits/typesizes.h \
  /opt/OE/stuff/tmp/staging/arm-linux-uclibc/usr/include/bits/pthreadtypes.h \
  /opt/OE/stuff/tmp/staging/arm-linux-uclibc/usr/include/bits/sched.h \
  /opt/OE/stuff/tmp/staging/arm-linux-uclibc/usr/include/bits/uClibc_stdio.h \
  /opt/OE/stuff/tmp/staging/arm-linux-uclibc/usr/include/wchar.h \
  /opt/OE/stuff/tmp/staging/arm-linux-uclibc/usr/include/bits/wchar.h \
  /opt/OE/stuff/tmp/staging/arm-linux-uclibc/usr/include/bits/uClibc_mutex.h \
  /opt/OE/stuff/tmp/staging/arm-linux-uclibc/usr/include/pthread.h \
  /opt/OE/stuff/tmp/staging/arm-linux-uclibc/usr/include/sched.h \
  /opt/OE/stuff/tmp/staging/arm-linux-uclibc/usr/include/time.h \
  /opt/OE/stuff/tmp/staging/arm-linux-uclibc/usr/include/bits/time.h \
  /opt/OE/stuff/tmp/staging/arm-linux-uclibc/usr/include/bits/uClibc_clk_tck.h \
  /opt/OE/stuff/tmp/staging/arm-linux-uclibc/usr/include/signal.h \
  /opt/OE/stuff/tmp/staging/arm-linux-uclibc/usr/include/bits/sigset.h \
  /opt/OE/stuff/tmp/staging/arm-linux-uclibc/usr/include/bits/initspin.h \
  /opt/OE/stuff/tmp/staging/arm-linux-uclibc/usr/include/bits/sigthread.h \
  /opt/OE/stuff/tmp/staging/arm-linux-uclibc/usr/include/bits/uClibc_pthread.h \
  /opt/OE/stuff/tmp/staging/arm-linux-uclibc/usr/include/bits/stdio_lim.h \
  /opt/OE/stuff/tmp/staging/arm-linux-uclibc/usr/include/stdlib.h \
  /opt/OE/stuff/tmp/staging/arm-linux-uclibc/usr/include/sys/types.h \
  /opt/OE/stuff/tmp/staging/arm-linux-uclibc/usr/include/endian.h \
  /opt/OE/stuff/tmp/staging/arm-linux-uclibc/usr/include/bits/endian.h \
  /opt/OE/stuff/tmp/staging/arm-linux-uclibc/usr/include/sys/select.h \
  /opt/OE/stuff/tmp/staging/arm-linux-uclibc/usr/include/bits/select.h \
  /opt/OE/stuff/tmp/staging/arm-linux-uclibc/usr/include/sys/sysmacros.h \
  /opt/OE/stuff/tmp/staging/arm-linux-uclibc/usr/include/alloca.h \
  /opt/OE/stuff/tmp/staging/arm-linux-uclibc/usr/include/bits/signum.h \
  /opt/OE/stuff/tmp/staging/arm-linux-uclibc/usr/include/bits/siginfo.h \
  /opt/OE/stuff/tmp/staging/arm-linux-uclibc/usr/include/bits/sigaction.h \
  /opt/OE/stuff/tmp/staging/arm-linux-uclibc/usr/include/bits/sigcontext.h \
  /opt/OE/stuff/tmp/staging/arm-linux-uclibc/usr/include/asm/sigcontext.h \
  /opt/OE/stuff/tmp/staging/arm-linux-uclibc/usr/include/bits/sigstack.h \
  /opt/OE/stuff/tmp/staging/arm-linux-uclibc/usr/include/string.h \
  /opt/OE/stuff/tmp/staging/arm-linux-uclibc/usr/include/errno.h \
  /opt/OE/stuff/tmp/staging/arm-linux-uclibc/usr/include/bits/errno.h \
  /opt/OE/stuff/tmp/staging/arm-linux-uclibc/usr/include/bits/errno_values.h \
  /opt/OE/stuff/tmp/staging/arm-linux-uclibc/usr/include/unistd.h \
  /opt/OE/stuff/tmp/staging/arm-linux-uclibc/usr/include/bits/posix_opt.h \
  /opt/OE/stuff/tmp/staging/arm-linux-uclibc/usr/include/bits/confname.h \
  /opt/OE/stuff/tmp/staging/arm-linux-uclibc/usr/include/bits/getopt.h

Thanks.




More information about the Openembedded-devel mailing list