* [Xenomai-core] [PATCH] posix: Avoid double declarations @ 2009-04-14 16:11 Jan Kiszka 2009-04-14 16:22 ` Gilles Chanteperdrix 2009-04-14 16:24 ` Gilles Chanteperdrix 0 siblings, 2 replies; 10+ messages in thread From: Jan Kiszka @ 2009-04-14 16:11 UTC (permalink / raw) To: Philippe Gerum; +Cc: xenomai-core Please pull from git://git.xenomai.org/xenomai-jki.git for-upstream and run bootstrap. ----------> Recent glibc versions come with support for pthread_mutexattr_get/setprotocol and pthread_condattr_get/setclock. Make sure we don't declare those prototypes in Xenomai's pthread.h a second time as this can cause g++ warnings and even errors. Signed-off-by: Jan Kiszka <jan.kiszka@domain.hid> --- configure.in | 4 ++-- include/posix/pthread.h | 4 ++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/configure.in b/configure.in index b291ce4..6a8b821 100644 --- a/configure.in +++ b/configure.in @@ -750,8 +750,8 @@ if test x$CONFIG_XENO_POSIX_UITRON_MLOCKALL = xy; then fi save_LIBS="$LIBS" -LIBS="$LIBS -lrt" -AC_CHECK_FUNCS([shm_open shm_unlink mmap64 ftruncate64]) +LIBS="$LIBS -lrt -lpthread" +AC_CHECK_FUNCS([shm_open shm_unlink mmap64 ftruncate64 pthread_mutexattr_setprotocol pthread_condattr_setclock]) LIBS="$save_LIBS" AC_MSG_CHECKING(whether to enable dlopen support for skin libraries) diff --git a/include/posix/pthread.h b/include/posix/pthread.h index 2344158..98db325 100644 --- a/include/posix/pthread.h +++ b/include/posix/pthread.h @@ -418,17 +418,21 @@ int pthread_intr_control_np(pthread_intr_t intr, extern "C" { #endif +#ifndef HAVE_PTHREAD_MUTEXATTR_SETPROTOCOL int pthread_mutexattr_getprotocol(const pthread_mutexattr_t *attr, int *proto); int pthread_mutexattr_setprotocol(pthread_mutexattr_t *attr, int proto); +#endif +#ifndef HAVE_PTHREAD_CONDATTR_SETCLOCK int pthread_condattr_getclock(const pthread_condattr_t *attr, clockid_t *clk_id); int pthread_condattr_setclock(pthread_condattr_t *attr, clockid_t clk_id); +#endif int pthread_make_periodic_np(pthread_t thread, struct timespec *starttp, ^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [Xenomai-core] [PATCH] posix: Avoid double declarations 2009-04-14 16:11 [Xenomai-core] [PATCH] posix: Avoid double declarations Jan Kiszka @ 2009-04-14 16:22 ` Gilles Chanteperdrix 2009-04-14 16:32 ` Jan Kiszka 2009-04-14 16:24 ` Gilles Chanteperdrix 1 sibling, 1 reply; 10+ messages in thread From: Gilles Chanteperdrix @ 2009-04-14 16:22 UTC (permalink / raw) To: Jan Kiszka; +Cc: xenomai-core Jan Kiszka wrote: > Please pull from git://git.xenomai.org/xenomai-jki.git for-upstream > and run bootstrap. > > ----------> > > Recent glibc versions come with support for > pthread_mutexattr_get/setprotocol and pthread_condattr_get/setclock. > Make sure we don't declare those prototypes in Xenomai's pthread.h a > second time as this can cause g++ warnings and even errors. > > Signed-off-by: Jan Kiszka <jan.kiszka@domain.hid> > --- > > configure.in | 4 ++-- > include/posix/pthread.h | 4 ++++ > 2 files changed, 6 insertions(+), 2 deletions(-) > > diff --git a/configure.in b/configure.in > index b291ce4..6a8b821 100644 > --- a/configure.in > +++ b/configure.in > @@ -750,8 +750,8 @@ if test x$CONFIG_XENO_POSIX_UITRON_MLOCKALL = xy; then > fi > > save_LIBS="$LIBS" > -LIBS="$LIBS -lrt" > -AC_CHECK_FUNCS([shm_open shm_unlink mmap64 ftruncate64]) > +LIBS="$LIBS -lrt -lpthread" > +AC_CHECK_FUNCS([shm_open shm_unlink mmap64 ftruncate64 pthread_mutexattr_setprotocol pthread_condattr_setclock]) > LIBS="$save_LIBS" > > AC_MSG_CHECKING(whether to enable dlopen support for skin libraries) > diff --git a/include/posix/pthread.h b/include/posix/pthread.h > index 2344158..98db325 100644 > --- a/include/posix/pthread.h > +++ b/include/posix/pthread.h > @@ -418,17 +418,21 @@ int pthread_intr_control_np(pthread_intr_t intr, > extern "C" { > #endif > > +#ifndef HAVE_PTHREAD_MUTEXATTR_SETPROTOCOL > int pthread_mutexattr_getprotocol(const pthread_mutexattr_t *attr, > int *proto); > > int pthread_mutexattr_setprotocol(pthread_mutexattr_t *attr, > int proto); > +#endif That is not enough, if these functions are defined, then the PTHREAD_PRIO_NONE, PTHREAD_PRIO_INHERIT, PTHREAD_PRIO_PROTECT are going to be defined. Are you sure that the missing "restrict" are not causing the errors ? -- Gilles. ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [Xenomai-core] [PATCH] posix: Avoid double declarations 2009-04-14 16:22 ` Gilles Chanteperdrix @ 2009-04-14 16:32 ` Jan Kiszka 2009-04-14 16:43 ` Gilles Chanteperdrix 0 siblings, 1 reply; 10+ messages in thread From: Jan Kiszka @ 2009-04-14 16:32 UTC (permalink / raw) To: Gilles Chanteperdrix; +Cc: xenomai-core Gilles Chanteperdrix wrote: > Jan Kiszka wrote: >> Please pull from git://git.xenomai.org/xenomai-jki.git for-upstream >> and run bootstrap. >> >> ----------> >> >> Recent glibc versions come with support for >> pthread_mutexattr_get/setprotocol and pthread_condattr_get/setclock. >> Make sure we don't declare those prototypes in Xenomai's pthread.h a >> second time as this can cause g++ warnings and even errors. >> >> Signed-off-by: Jan Kiszka <jan.kiszka@domain.hid> >> --- >> >> configure.in | 4 ++-- >> include/posix/pthread.h | 4 ++++ >> 2 files changed, 6 insertions(+), 2 deletions(-) >> >> diff --git a/configure.in b/configure.in >> index b291ce4..6a8b821 100644 >> --- a/configure.in >> +++ b/configure.in >> @@ -750,8 +750,8 @@ if test x$CONFIG_XENO_POSIX_UITRON_MLOCKALL = xy; then >> fi >> >> save_LIBS="$LIBS" >> -LIBS="$LIBS -lrt" >> -AC_CHECK_FUNCS([shm_open shm_unlink mmap64 ftruncate64]) >> +LIBS="$LIBS -lrt -lpthread" >> +AC_CHECK_FUNCS([shm_open shm_unlink mmap64 ftruncate64 pthread_mutexattr_setprotocol pthread_condattr_setclock]) >> LIBS="$save_LIBS" >> >> AC_MSG_CHECKING(whether to enable dlopen support for skin libraries) >> diff --git a/include/posix/pthread.h b/include/posix/pthread.h >> index 2344158..98db325 100644 >> --- a/include/posix/pthread.h >> +++ b/include/posix/pthread.h >> @@ -418,17 +418,21 @@ int pthread_intr_control_np(pthread_intr_t intr, >> extern "C" { >> #endif >> >> +#ifndef HAVE_PTHREAD_MUTEXATTR_SETPROTOCOL >> int pthread_mutexattr_getprotocol(const pthread_mutexattr_t *attr, >> int *proto); >> >> int pthread_mutexattr_setprotocol(pthread_mutexattr_t *attr, >> int proto); >> +#endif > > That is not enough, if these functions are defined, then the > PTHREAD_PRIO_NONE, PTHREAD_PRIO_INHERIT, PTHREAD_PRIO_PROTECT are going > to be defined. > > Are you sure that the missing "restrict" are not causing the errors ? This is enough to fix our build breakage due to different prototypes of those functions, at least under C++. The magic __THROW may make the difference, but I didn't test that in details as I think its simply fragile to redeclare them. Don't know if those constants can cause trouble, they didn't do so here so far. But I can Include them if preferred. Jan -- Siemens AG, Corporate Technology, CT SE 2 Corporate Competence Center Embedded Linux ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [Xenomai-core] [PATCH] posix: Avoid double declarations 2009-04-14 16:32 ` Jan Kiszka @ 2009-04-14 16:43 ` Gilles Chanteperdrix 2009-04-14 16:50 ` Jan Kiszka 0 siblings, 1 reply; 10+ messages in thread From: Gilles Chanteperdrix @ 2009-04-14 16:43 UTC (permalink / raw) To: Jan Kiszka; +Cc: xenomai-core Jan Kiszka wrote: > Gilles Chanteperdrix wrote: >> Jan Kiszka wrote: >>> Please pull from git://git.xenomai.org/xenomai-jki.git for-upstream >>> and run bootstrap. >>> >>> ----------> >>> >>> Recent glibc versions come with support for >>> pthread_mutexattr_get/setprotocol and pthread_condattr_get/setclock. >>> Make sure we don't declare those prototypes in Xenomai's pthread.h a >>> second time as this can cause g++ warnings and even errors. >>> >>> Signed-off-by: Jan Kiszka <jan.kiszka@domain.hid> >>> --- >>> >>> configure.in | 4 ++-- >>> include/posix/pthread.h | 4 ++++ >>> 2 files changed, 6 insertions(+), 2 deletions(-) >>> >>> diff --git a/configure.in b/configure.in >>> index b291ce4..6a8b821 100644 >>> --- a/configure.in >>> +++ b/configure.in >>> @@ -750,8 +750,8 @@ if test x$CONFIG_XENO_POSIX_UITRON_MLOCKALL = xy; then >>> fi >>> >>> save_LIBS="$LIBS" >>> -LIBS="$LIBS -lrt" >>> -AC_CHECK_FUNCS([shm_open shm_unlink mmap64 ftruncate64]) >>> +LIBS="$LIBS -lrt -lpthread" >>> +AC_CHECK_FUNCS([shm_open shm_unlink mmap64 ftruncate64 pthread_mutexattr_setprotocol pthread_condattr_setclock]) >>> LIBS="$save_LIBS" >>> >>> AC_MSG_CHECKING(whether to enable dlopen support for skin libraries) >>> diff --git a/include/posix/pthread.h b/include/posix/pthread.h >>> index 2344158..98db325 100644 >>> --- a/include/posix/pthread.h >>> +++ b/include/posix/pthread.h >>> @@ -418,17 +418,21 @@ int pthread_intr_control_np(pthread_intr_t intr, >>> extern "C" { >>> #endif >>> >>> +#ifndef HAVE_PTHREAD_MUTEXATTR_SETPROTOCOL >>> int pthread_mutexattr_getprotocol(const pthread_mutexattr_t *attr, >>> int *proto); >>> >>> int pthread_mutexattr_setprotocol(pthread_mutexattr_t *attr, >>> int proto); >>> +#endif >> That is not enough, if these functions are defined, then the >> PTHREAD_PRIO_NONE, PTHREAD_PRIO_INHERIT, PTHREAD_PRIO_PROTECT are going >> to be defined. >> >> Are you sure that the missing "restrict" are not causing the errors ? > > This is enough to fix our build breakage due to different prototypes of > those functions, at least under C++. The magic __THROW may make the > difference, but I didn't test that in details as I think its simply > fragile to redeclare them. > > Don't know if those constants can cause trouble, they didn't do so here > so far. But I can Include them if preferred. If it works, it is just as fragile as trying to match function declarations of Xenomai's pthread.h and glibc's pthread.h. -- Gilles. ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [Xenomai-core] [PATCH] posix: Avoid double declarations 2009-04-14 16:43 ` Gilles Chanteperdrix @ 2009-04-14 16:50 ` Jan Kiszka 2009-04-14 16:54 ` Gilles Chanteperdrix 0 siblings, 1 reply; 10+ messages in thread From: Jan Kiszka @ 2009-04-14 16:50 UTC (permalink / raw) To: Gilles Chanteperdrix; +Cc: xenomai-core Gilles Chanteperdrix wrote: > Jan Kiszka wrote: >> Gilles Chanteperdrix wrote: >>> Jan Kiszka wrote: >>>> Please pull from git://git.xenomai.org/xenomai-jki.git for-upstream >>>> and run bootstrap. >>>> >>>> ----------> >>>> >>>> Recent glibc versions come with support for >>>> pthread_mutexattr_get/setprotocol and pthread_condattr_get/setclock. >>>> Make sure we don't declare those prototypes in Xenomai's pthread.h a >>>> second time as this can cause g++ warnings and even errors. >>>> >>>> Signed-off-by: Jan Kiszka <jan.kiszka@domain.hid> >>>> --- >>>> >>>> configure.in | 4 ++-- >>>> include/posix/pthread.h | 4 ++++ >>>> 2 files changed, 6 insertions(+), 2 deletions(-) >>>> >>>> diff --git a/configure.in b/configure.in >>>> index b291ce4..6a8b821 100644 >>>> --- a/configure.in >>>> +++ b/configure.in >>>> @@ -750,8 +750,8 @@ if test x$CONFIG_XENO_POSIX_UITRON_MLOCKALL = xy; then >>>> fi >>>> >>>> save_LIBS="$LIBS" >>>> -LIBS="$LIBS -lrt" >>>> -AC_CHECK_FUNCS([shm_open shm_unlink mmap64 ftruncate64]) >>>> +LIBS="$LIBS -lrt -lpthread" >>>> +AC_CHECK_FUNCS([shm_open shm_unlink mmap64 ftruncate64 pthread_mutexattr_setprotocol pthread_condattr_setclock]) >>>> LIBS="$save_LIBS" >>>> >>>> AC_MSG_CHECKING(whether to enable dlopen support for skin libraries) >>>> diff --git a/include/posix/pthread.h b/include/posix/pthread.h >>>> index 2344158..98db325 100644 >>>> --- a/include/posix/pthread.h >>>> +++ b/include/posix/pthread.h >>>> @@ -418,17 +418,21 @@ int pthread_intr_control_np(pthread_intr_t intr, >>>> extern "C" { >>>> #endif >>>> >>>> +#ifndef HAVE_PTHREAD_MUTEXATTR_SETPROTOCOL >>>> int pthread_mutexattr_getprotocol(const pthread_mutexattr_t *attr, >>>> int *proto); >>>> >>>> int pthread_mutexattr_setprotocol(pthread_mutexattr_t *attr, >>>> int proto); >>>> +#endif >>> That is not enough, if these functions are defined, then the >>> PTHREAD_PRIO_NONE, PTHREAD_PRIO_INHERIT, PTHREAD_PRIO_PROTECT are going >>> to be defined. >>> >>> Are you sure that the missing "restrict" are not causing the errors ? >> This is enough to fix our build breakage due to different prototypes of >> those functions, at least under C++. The magic __THROW may make the >> difference, but I didn't test that in details as I think its simply >> fragile to redeclare them. >> >> Don't know if those constants can cause trouble, they didn't do so here >> so far. But I can Include them if preferred. > > If it works, it is just as fragile as trying to match function > declarations of Xenomai's pthread.h and glibc's pthread.h. Nope, because you don't repeat function attributes for their definitions. So Xenomai's pthread lib should pick up what the host header declares. Jan -- Siemens AG, Corporate Technology, CT SE 2 Corporate Competence Center Embedded Linux ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [Xenomai-core] [PATCH] posix: Avoid double declarations 2009-04-14 16:50 ` Jan Kiszka @ 2009-04-14 16:54 ` Gilles Chanteperdrix 2009-04-14 17:00 ` Jan Kiszka 0 siblings, 1 reply; 10+ messages in thread From: Gilles Chanteperdrix @ 2009-04-14 16:54 UTC (permalink / raw) To: Jan Kiszka; +Cc: xenomai-core Jan Kiszka wrote: > Gilles Chanteperdrix wrote: >> Jan Kiszka wrote: >>> Gilles Chanteperdrix wrote: >>>> Jan Kiszka wrote: >>>>> Please pull from git://git.xenomai.org/xenomai-jki.git for-upstream >>>>> and run bootstrap. >>>>> >>>>> ----------> >>>>> >>>>> Recent glibc versions come with support for >>>>> pthread_mutexattr_get/setprotocol and pthread_condattr_get/setclock. >>>>> Make sure we don't declare those prototypes in Xenomai's pthread.h a >>>>> second time as this can cause g++ warnings and even errors. >>>>> >>>>> Signed-off-by: Jan Kiszka <jan.kiszka@domain.hid> >>>>> --- >>>>> >>>>> configure.in | 4 ++-- >>>>> include/posix/pthread.h | 4 ++++ >>>>> 2 files changed, 6 insertions(+), 2 deletions(-) >>>>> >>>>> diff --git a/configure.in b/configure.in >>>>> index b291ce4..6a8b821 100644 >>>>> --- a/configure.in >>>>> +++ b/configure.in >>>>> @@ -750,8 +750,8 @@ if test x$CONFIG_XENO_POSIX_UITRON_MLOCKALL = xy; then >>>>> fi >>>>> >>>>> save_LIBS="$LIBS" >>>>> -LIBS="$LIBS -lrt" >>>>> -AC_CHECK_FUNCS([shm_open shm_unlink mmap64 ftruncate64]) >>>>> +LIBS="$LIBS -lrt -lpthread" >>>>> +AC_CHECK_FUNCS([shm_open shm_unlink mmap64 ftruncate64 pthread_mutexattr_setprotocol pthread_condattr_setclock]) >>>>> LIBS="$save_LIBS" >>>>> >>>>> AC_MSG_CHECKING(whether to enable dlopen support for skin libraries) >>>>> diff --git a/include/posix/pthread.h b/include/posix/pthread.h >>>>> index 2344158..98db325 100644 >>>>> --- a/include/posix/pthread.h >>>>> +++ b/include/posix/pthread.h >>>>> @@ -418,17 +418,21 @@ int pthread_intr_control_np(pthread_intr_t intr, >>>>> extern "C" { >>>>> #endif >>>>> >>>>> +#ifndef HAVE_PTHREAD_MUTEXATTR_SETPROTOCOL >>>>> int pthread_mutexattr_getprotocol(const pthread_mutexattr_t *attr, >>>>> int *proto); >>>>> >>>>> int pthread_mutexattr_setprotocol(pthread_mutexattr_t *attr, >>>>> int proto); >>>>> +#endif >>>> That is not enough, if these functions are defined, then the >>>> PTHREAD_PRIO_NONE, PTHREAD_PRIO_INHERIT, PTHREAD_PRIO_PROTECT are going >>>> to be defined. >>>> >>>> Are you sure that the missing "restrict" are not causing the errors ? >>> This is enough to fix our build breakage due to different prototypes of >>> those functions, at least under C++. The magic __THROW may make the >>> difference, but I didn't test that in details as I think its simply >>> fragile to redeclare them. >>> >>> Don't know if those constants can cause trouble, they didn't do so here >>> so far. But I can Include them if preferred. >> If it works, it is just as fragile as trying to match function >> declarations of Xenomai's pthread.h and glibc's pthread.h. > > Nope, because you don't repeat function attributes for their > definitions. So Xenomai's pthread lib should pick up what the host > header declares. Currently, PTHREAD_PRIO_NONE, PTHREAD_PRIO_INHERIT and PTHREAD_PRIO_PROTECT are defined in Xenomai's header unconditionnaly. You see no warning or error because they are defined in an enum in glibc. But this is a fragile situation. -- Gilles. ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [Xenomai-core] [PATCH] posix: Avoid double declarations 2009-04-14 16:54 ` Gilles Chanteperdrix @ 2009-04-14 17:00 ` Jan Kiszka 2009-04-14 17:23 ` Gilles Chanteperdrix 0 siblings, 1 reply; 10+ messages in thread From: Jan Kiszka @ 2009-04-14 17:00 UTC (permalink / raw) To: Gilles Chanteperdrix; +Cc: xenomai-core Gilles Chanteperdrix wrote: > Jan Kiszka wrote: >> Gilles Chanteperdrix wrote: >>> Jan Kiszka wrote: >>>> Gilles Chanteperdrix wrote: >>>>> Jan Kiszka wrote: >>>>>> Please pull from git://git.xenomai.org/xenomai-jki.git for-upstream >>>>>> and run bootstrap. >>>>>> >>>>>> ----------> >>>>>> >>>>>> Recent glibc versions come with support for >>>>>> pthread_mutexattr_get/setprotocol and pthread_condattr_get/setclock. >>>>>> Make sure we don't declare those prototypes in Xenomai's pthread.h a >>>>>> second time as this can cause g++ warnings and even errors. >>>>>> >>>>>> Signed-off-by: Jan Kiszka <jan.kiszka@domain.hid> >>>>>> --- >>>>>> >>>>>> configure.in | 4 ++-- >>>>>> include/posix/pthread.h | 4 ++++ >>>>>> 2 files changed, 6 insertions(+), 2 deletions(-) >>>>>> >>>>>> diff --git a/configure.in b/configure.in >>>>>> index b291ce4..6a8b821 100644 >>>>>> --- a/configure.in >>>>>> +++ b/configure.in >>>>>> @@ -750,8 +750,8 @@ if test x$CONFIG_XENO_POSIX_UITRON_MLOCKALL = xy; then >>>>>> fi >>>>>> >>>>>> save_LIBS="$LIBS" >>>>>> -LIBS="$LIBS -lrt" >>>>>> -AC_CHECK_FUNCS([shm_open shm_unlink mmap64 ftruncate64]) >>>>>> +LIBS="$LIBS -lrt -lpthread" >>>>>> +AC_CHECK_FUNCS([shm_open shm_unlink mmap64 ftruncate64 pthread_mutexattr_setprotocol pthread_condattr_setclock]) >>>>>> LIBS="$save_LIBS" >>>>>> >>>>>> AC_MSG_CHECKING(whether to enable dlopen support for skin libraries) >>>>>> diff --git a/include/posix/pthread.h b/include/posix/pthread.h >>>>>> index 2344158..98db325 100644 >>>>>> --- a/include/posix/pthread.h >>>>>> +++ b/include/posix/pthread.h >>>>>> @@ -418,17 +418,21 @@ int pthread_intr_control_np(pthread_intr_t intr, >>>>>> extern "C" { >>>>>> #endif >>>>>> >>>>>> +#ifndef HAVE_PTHREAD_MUTEXATTR_SETPROTOCOL >>>>>> int pthread_mutexattr_getprotocol(const pthread_mutexattr_t *attr, >>>>>> int *proto); >>>>>> >>>>>> int pthread_mutexattr_setprotocol(pthread_mutexattr_t *attr, >>>>>> int proto); >>>>>> +#endif >>>>> That is not enough, if these functions are defined, then the >>>>> PTHREAD_PRIO_NONE, PTHREAD_PRIO_INHERIT, PTHREAD_PRIO_PROTECT are going >>>>> to be defined. >>>>> >>>>> Are you sure that the missing "restrict" are not causing the errors ? >>>> This is enough to fix our build breakage due to different prototypes of >>>> those functions, at least under C++. The magic __THROW may make the >>>> difference, but I didn't test that in details as I think its simply >>>> fragile to redeclare them. >>>> >>>> Don't know if those constants can cause trouble, they didn't do so here >>>> so far. But I can Include them if preferred. >>> If it works, it is just as fragile as trying to match function >>> declarations of Xenomai's pthread.h and glibc's pthread.h. >> Nope, because you don't repeat function attributes for their >> definitions. So Xenomai's pthread lib should pick up what the host >> header declares. > > Currently, PTHREAD_PRIO_NONE, PTHREAD_PRIO_INHERIT and > PTHREAD_PRIO_PROTECT are defined in Xenomai's header unconditionnaly. > You see no warning or error because they are defined in an enum in > glibc. But this is a fragile situation. > I could offer this version and later add a patch to provide the missing __real prototypes for all POSIX wrappers. Jan --------> Recent glibc versions come with support for pthread_mutexattr_get/setprotocol and pthread_condattr_get/setclock. Make sure we don't declare those prototypes in Xenomai's pthread.h a second time as this can cause g++ warnings and even errors. Also exclude mutexattr related constants at this chance. Signed-off-by: Jan Kiszka <jan.kiszka@domain.hid> --- configure.in | 4 ++-- include/posix/pthread.h | 7 +++++++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/configure.in b/configure.in index b291ce4..6a8b821 100644 --- a/configure.in +++ b/configure.in @@ -750,8 +750,8 @@ if test x$CONFIG_XENO_POSIX_UITRON_MLOCKALL = xy; then fi save_LIBS="$LIBS" -LIBS="$LIBS -lrt" -AC_CHECK_FUNCS([shm_open shm_unlink mmap64 ftruncate64]) +LIBS="$LIBS -lrt -lpthread" +AC_CHECK_FUNCS([shm_open shm_unlink mmap64 ftruncate64 pthread_mutexattr_setprotocol pthread_condattr_setclock]) LIBS="$save_LIBS" AC_MSG_CHECKING(whether to enable dlopen support for skin libraries) diff --git a/include/posix/pthread.h b/include/posix/pthread.h index 2344158..10176ad 100644 --- a/include/posix/pthread.h +++ b/include/posix/pthread.h @@ -140,9 +140,12 @@ struct timespec; #endif /* __KERNEL__ || __XENO_SIM__ */ +#if defined(__KERNEL__) || defined(__XENO_SIM__) || \ + !define(HAVE_PTHREAD_MUTEXATTR_SETPROTOCOL) #define PTHREAD_PRIO_NONE 0 #define PTHREAD_PRIO_INHERIT 1 #define PTHREAD_PRIO_PROTECT 2 +#endif /* __KERNEL__ || __XENO_SIM__ || !HAVE_PTHREAD_MUTEXATTR_SETPROTOCOL */ #define PTHREAD_WARNSW XNTRAPSW #define PTHREAD_LOCK_SCHED XNLOCK @@ -418,17 +421,21 @@ int pthread_intr_control_np(pthread_intr_t intr, extern "C" { #endif +#ifndef HAVE_PTHREAD_MUTEXATTR_SETPROTOCOL int pthread_mutexattr_getprotocol(const pthread_mutexattr_t *attr, int *proto); int pthread_mutexattr_setprotocol(pthread_mutexattr_t *attr, int proto); +#endif +#ifndef HAVE_PTHREAD_CONDATTR_SETCLOCK int pthread_condattr_getclock(const pthread_condattr_t *attr, clockid_t *clk_id); int pthread_condattr_setclock(pthread_condattr_t *attr, clockid_t clk_id); +#endif int pthread_make_periodic_np(pthread_t thread, struct timespec *starttp, ^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [Xenomai-core] [PATCH] posix: Avoid double declarations 2009-04-14 17:00 ` Jan Kiszka @ 2009-04-14 17:23 ` Gilles Chanteperdrix 0 siblings, 0 replies; 10+ messages in thread From: Gilles Chanteperdrix @ 2009-04-14 17:23 UTC (permalink / raw) To: Jan Kiszka; +Cc: xenomai-core Jan Kiszka wrote: > Gilles Chanteperdrix wrote: >> Jan Kiszka wrote: >>> Gilles Chanteperdrix wrote: >>>> Jan Kiszka wrote: >>>>> Gilles Chanteperdrix wrote: >>>>>> Jan Kiszka wrote: >>>>>>> Please pull from git://git.xenomai.org/xenomai-jki.git for-upstream >>>>>>> and run bootstrap. >>>>>>> >>>>>>> ----------> >>>>>>> >>>>>>> Recent glibc versions come with support for >>>>>>> pthread_mutexattr_get/setprotocol and pthread_condattr_get/setclock. >>>>>>> Make sure we don't declare those prototypes in Xenomai's pthread.h a >>>>>>> second time as this can cause g++ warnings and even errors. >>>>>>> >>>>>>> Signed-off-by: Jan Kiszka <jan.kiszka@domain.hid> >>>>>>> --- >>>>>>> >>>>>>> configure.in | 4 ++-- >>>>>>> include/posix/pthread.h | 4 ++++ >>>>>>> 2 files changed, 6 insertions(+), 2 deletions(-) >>>>>>> >>>>>>> diff --git a/configure.in b/configure.in >>>>>>> index b291ce4..6a8b821 100644 >>>>>>> --- a/configure.in >>>>>>> +++ b/configure.in >>>>>>> @@ -750,8 +750,8 @@ if test x$CONFIG_XENO_POSIX_UITRON_MLOCKALL = xy; then >>>>>>> fi >>>>>>> >>>>>>> save_LIBS="$LIBS" >>>>>>> -LIBS="$LIBS -lrt" >>>>>>> -AC_CHECK_FUNCS([shm_open shm_unlink mmap64 ftruncate64]) >>>>>>> +LIBS="$LIBS -lrt -lpthread" >>>>>>> +AC_CHECK_FUNCS([shm_open shm_unlink mmap64 ftruncate64 pthread_mutexattr_setprotocol pthread_condattr_setclock]) >>>>>>> LIBS="$save_LIBS" >>>>>>> >>>>>>> AC_MSG_CHECKING(whether to enable dlopen support for skin libraries) >>>>>>> diff --git a/include/posix/pthread.h b/include/posix/pthread.h >>>>>>> index 2344158..98db325 100644 >>>>>>> --- a/include/posix/pthread.h >>>>>>> +++ b/include/posix/pthread.h >>>>>>> @@ -418,17 +418,21 @@ int pthread_intr_control_np(pthread_intr_t intr, >>>>>>> extern "C" { >>>>>>> #endif >>>>>>> >>>>>>> +#ifndef HAVE_PTHREAD_MUTEXATTR_SETPROTOCOL >>>>>>> int pthread_mutexattr_getprotocol(const pthread_mutexattr_t *attr, >>>>>>> int *proto); >>>>>>> >>>>>>> int pthread_mutexattr_setprotocol(pthread_mutexattr_t *attr, >>>>>>> int proto); >>>>>>> +#endif >>>>>> That is not enough, if these functions are defined, then the >>>>>> PTHREAD_PRIO_NONE, PTHREAD_PRIO_INHERIT, PTHREAD_PRIO_PROTECT are going >>>>>> to be defined. >>>>>> >>>>>> Are you sure that the missing "restrict" are not causing the errors ? >>>>> This is enough to fix our build breakage due to different prototypes of >>>>> those functions, at least under C++. The magic __THROW may make the >>>>> difference, but I didn't test that in details as I think its simply >>>>> fragile to redeclare them. >>>>> >>>>> Don't know if those constants can cause trouble, they didn't do so here >>>>> so far. But I can Include them if preferred. >>>> If it works, it is just as fragile as trying to match function >>>> declarations of Xenomai's pthread.h and glibc's pthread.h. >>> Nope, because you don't repeat function attributes for their >>> definitions. So Xenomai's pthread lib should pick up what the host >>> header declares. >> Currently, PTHREAD_PRIO_NONE, PTHREAD_PRIO_INHERIT and >> PTHREAD_PRIO_PROTECT are defined in Xenomai's header unconditionnaly. >> You see no warning or error because they are defined in an enum in >> glibc. But this is a fragile situation. >> > > I could offer this version and later add a patch to provide the missing > __real prototypes for all POSIX wrappers. That's OK for me. -- Gilles. ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [Xenomai-core] [PATCH] posix: Avoid double declarations 2009-04-14 16:11 [Xenomai-core] [PATCH] posix: Avoid double declarations Jan Kiszka 2009-04-14 16:22 ` Gilles Chanteperdrix @ 2009-04-14 16:24 ` Gilles Chanteperdrix 2009-04-14 16:29 ` Jan Kiszka 1 sibling, 1 reply; 10+ messages in thread From: Gilles Chanteperdrix @ 2009-04-14 16:24 UTC (permalink / raw) To: Jan Kiszka; +Cc: xenomai-core Jan Kiszka wrote: > Please pull from git://git.xenomai.org/xenomai-jki.git for-upstream > and run bootstrap. > > ----------> > > Recent glibc versions come with support for > pthread_mutexattr_get/setprotocol and pthread_condattr_get/setclock. > Make sure we don't declare those prototypes in Xenomai's pthread.h a > second time as this can cause g++ warnings and even errors. You need to declare the __real variants too, as well as the wrappers. -- Gilles. ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [Xenomai-core] [PATCH] posix: Avoid double declarations 2009-04-14 16:24 ` Gilles Chanteperdrix @ 2009-04-14 16:29 ` Jan Kiszka 0 siblings, 0 replies; 10+ messages in thread From: Jan Kiszka @ 2009-04-14 16:29 UTC (permalink / raw) To: Gilles Chanteperdrix; +Cc: xenomai-core Gilles Chanteperdrix wrote: > Jan Kiszka wrote: >> Please pull from git://git.xenomai.org/xenomai-jki.git for-upstream >> and run bootstrap. >> >> ----------> >> >> Recent glibc versions come with support for >> pthread_mutexattr_get/setprotocol and pthread_condattr_get/setclock. >> Make sure we don't declare those prototypes in Xenomai's pthread.h a >> second time as this can cause g++ warnings and even errors. > > You need to declare the __real variants too, as well as the wrappers. As they don't existed for all the other attr helpers, I skipped this. Guess more work is required here. Jan -- Siemens AG, Corporate Technology, CT SE 2 Corporate Competence Center Embedded Linux ^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2009-04-14 17:23 UTC | newest] Thread overview: 10+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2009-04-14 16:11 [Xenomai-core] [PATCH] posix: Avoid double declarations Jan Kiszka 2009-04-14 16:22 ` Gilles Chanteperdrix 2009-04-14 16:32 ` Jan Kiszka 2009-04-14 16:43 ` Gilles Chanteperdrix 2009-04-14 16:50 ` Jan Kiszka 2009-04-14 16:54 ` Gilles Chanteperdrix 2009-04-14 17:00 ` Jan Kiszka 2009-04-14 17:23 ` Gilles Chanteperdrix 2009-04-14 16:24 ` Gilles Chanteperdrix 2009-04-14 16:29 ` Jan Kiszka
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.