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.kis...@siemens.com>
>>>>> ---
>>>>>
>>>>>  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.

_______________________________________________
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core

Reply via email to