* [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: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
* 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
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.