All of lore.kernel.org
 help / color / mirror / Atom feed
* pthread_cond_wait() never returns?
@ 2019-10-23 15:52 Jan Leupold
  2019-10-24  7:30 ` Lange Norbert
  0 siblings, 1 reply; 5+ messages in thread
From: Jan Leupold @ 2019-10-23 15:52 UTC (permalink / raw)
  To: xenomai

Hi all,

I am trying to use pthread_cond_t in a Xenomai application. When compiling
and linking with the flags from xeno-config, the condition variable stops
working as expected. It seems as if pthread_cond_wait() would never return.

Is this a known issue?
(but most probably I think it's just my fault and I would be glad if
someone could give me a hint)

BTW, "cyclictest -M" (also uses pthread_cond_t to signal a refresh) does
not work as expected either.

Regards,
Jan

Using:
------------
ipipe-arm, branched off at tag ipipe-core-4.19.33-arm-2
xenomai-3, branched off at 44065a107 (master April 2019)
custom hardware, SAMA5D2 SoC

The program:
----------------------
#include <pthread.h>
#include <stdio.h>
#include <unistd.h>

pthread_mutex_t mutex;
pthread_cond_t cond;

void*
task(void* arg)
{
    (void) arg;
    printf("task\n");
    for (int i = 0; i < 3; ++i)
    {
        pthread_mutex_lock(&mutex);
        pthread_cond_wait(&cond, &mutex);
        pthread_mutex_unlock(&mutex);
        printf("task: condition signaled (i=%d)\n", i);
    }
    printf("task: done\n");
    return NULL;
}

int
main()
{
    printf("main\n");

    pthread_mutex_init(&mutex, NULL);
    pthread_cond_init(&cond, NULL);

    pthread_t t;
    pthread_create(&t, NULL, task, NULL);

    for (int i = 0; i < 3; ++i)
    {
        sleep(1);
        pthread_cond_signal(&cond);
        printf("main: signal(i=%d)\n", i);
    }

    pthread_join(t, NULL);

    printf("main: done\n");
    return 0;
}

When compiling without Xenomai the output is:

main
task
main: signal(i=0)
task: condition signaled (i=0)
main: signal(i=1)
task: condition signaled (i=1)
main: signal(i=2)
task: condition signaled (i=2)
task: done
main: done

When compiling with Xenomai the output is:

main
task
main: signal(i=0)
main: signal(i=1)
main: signal(i=2)
^C
(pthread_join() never returns)

The difference in Makefile.am:
------------------------------

bin_PROGRAMS = test-condition-xeno test-condition-linux

test_condition_linux_SOURCES = condition_c.c
test_condition_linux_LDFLAGS = -pthread

test_condition_xeno_SOURCES = condition_c.c
test_condition_xeno_CFLAGS = $(shell xeno-config --skin=posix --cflags)
test_condition_xeno_LDADD = $(shell xeno-config --skin=posix --ldflags)

Output from --dump-config:
--------------------------
based on Xenomai/cobalt v3.1-devel -- #94e729d53 (2019-06-03 13:32:22 +0200)
CONFIG_MMU=1
CONFIG_XENO_BUILD_ARGS=" '--build=x86_64-linux'
'--host=arm-poky-linux-gnueabi' '--target=arm-poky-linux-gnueabi'
'--prefix=/usr' '--exec_prefix=/usr' '--bindir=/usr/bin'
'--sbindir=/usr/sbin' '--libexecdir=/usr/libexec' '--datadir=/usr/share'
'--sysconfdir=/etc' '--sharedstatedir=/com' '--localstatedir=/var'
'--libdir=/usr/lib' '--includedir=/usr/include/xenomai'
'--oldincludedir=/usr/include/xenomai' '--infodir=/usr/share/info'
'--mandir=/usr/share/man' '--disable-silent-rules'
'--with-libtool-sysroot=/home/jan/yocto/aertronic2.0-io/build-betrieb/tmp/work/cortexa5t2hf-vfp-poky-linux-gnueabi/xenomai/3+git999-r0/recipe-sysroot'
'--disable-static' '--disable-async-cancel' '--disable-clock-monotonic-raw'
'--with-core=cobalt' '--enable-debug=symbols' '--disable-dlopen-libs'
'--disable-doc-build' '--disable-fortify' '--disable-lores-clock'
'--disable-pshared' '--disable-registry' '--disable-smp' '--disable-tls'
'build_alias=x86_64-linux' 'host_alias=arm-poky-linux-gnueabi'
'target_alias=arm-poky-linux-gnueabi' 'CC=arm-poky-linux-gnueabi-gcc
-mthumb -mfpu=vfp -mfloat-abi=hard -mcpu=cortex-a5 -fstack-protector-strong
 -D_FORTIFY_SOURCE=2 -Wformat -Wformat-security -Werror=format-security
--sysroot=/home/jan/yocto/aertronic2.0-io/build-betrieb/tmp/work/cortexa5t2hf-vfp-poky-linux-gnueabi/xenomai/3+git999-r0/recipe-sysroot'
'CFLAGS= -O2 -pipe -g -feliminate-unused-debug-types
-fmacro-prefix-map=/home/jan/yocto/aertronic2.0-io/build-betrieb/tmp/work/cortexa5t2hf-vfp-poky-linux-gnueabi/xenomai/3+git999-r0=/usr/src/debug/xenomai/3+git999-r0

-fdebug-prefix-map=/home/jan/yocto/aertronic2.0-io/build-betrieb/tmp/work/cortexa5t2hf-vfp-poky-linux-gnueabi/xenomai/3+git999-r0=/usr/src/debug/xenomai/3+git999-r0

-fdebug-prefix-map=/home/jan/yocto/aertronic2.0-io/build-betrieb/tmp/work/cortexa5t2hf-vfp-poky-linux-gnueabi/xenomai/3+git999-r0/recipe-sysroot=

-fdebug-prefix-map=/home/jan/yocto/aertronic2.0-io/build-betrieb/tmp/work/cortexa5t2hf-vfp-poky-linux-gnueabi/xenomai/3+git999-r0/recipe-sysroot-native=
' 'LDFLAGS=-Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed
-fstack-protector-strong -Wl,-z,relro,-z,now' 'CPPFLAGS='
'CPP=arm-poky-linux-gnueabi-gcc -E
--sysroot=/home/jan/yocto/aertronic2.0-io/build-betrieb/tmp/work/cortexa5t2hf-vfp-poky-linux-gnueabi/xenomai/3+git999-r0/recipe-sysroot
 -mthumb -mfpu=vfp -mfloat-abi=hard -mcpu=cortex-a5
-fstack-protector-strong  -D_FORTIFY_SOURCE=2 -Wformat -Wformat-security
-Werror=format-security'
'PKG_CONFIG_PATH=/home/jan/yocto/aertronic2.0-io/build-betrieb/tmp/work/cortexa5t2hf-vfp-poky-linux-gnueabi/xenomai/3+git999-r0/recipe-sysroot/usr/lib/pkgconfig:/home/jan/yocto/aertronic2.0-io/build-betrieb/tmp/work/cortexa5t2hf-vfp-poky-linux-gnueabi/xenomai/3+git999-r0/recipe-sysroot/usr/share/pkgconfig'
'PKG_CONFIG_LIBDIR=/home/jan/yocto/aertronic2.0-io/build-betrieb/tmp/work/cortexa5t2hf-vfp-poky-linux-gnueabi/xenomai/3+git999-r0/recipe-sysroot/usr/lib/pkgconfig'"
CONFIG_XENO_BUILD_STRING="x86_64-pc-linux-gnu"
CONFIG_XENO_COBALT=1
CONFIG_XENO_COMPILER="gcc version 9.2.0 (GCC) "
CONFIG_XENO_DEFAULT_PERIOD=1000000
CONFIG_XENO_FORTIFY=1
CONFIG_XENO_HEAPMEM=1
CONFIG_XENO_HOST_STRING="arm-poky-linux-gnueabi"
CONFIG_XENO_LORES_CLOCK_DISABLED=1
CONFIG_XENO_PREFIX="/usr"
CONFIG_XENO_REVISION_LEVEL=90
CONFIG_XENO_SANITY=1
CONFIG_XENO_TLS_MODEL="initial-exec"
CONFIG_XENO_UAPI_LEVEL=15
CONFIG_XENO_VERSION_MAJOR=3
CONFIG_XENO_VERSION_MINOR=0
CONFIG_XENO_VERSION_STRING="3.1-devel"
---
CONFIG_SMP is OFF
CONFIG_XENO_ASYNC_CANCEL is OFF
CONFIG_XENO_COPPERPLATE_CLOCK_RESTRICTED is OFF
CONFIG_XENO_DEBUG is OFF
CONFIG_XENO_DEBUG_FULL is OFF
CONFIG_XENO_LAZY_SETSCHED is OFF
CONFIG_XENO_LIBS_DLOPEN is OFF
CONFIG_XENO_MERCURY is OFF
CONFIG_XENO_PSHARED is OFF
CONFIG_XENO_RAW_CLOCK_ENABLED is OFF
CONFIG_XENO_REGISTRY is OFF
CONFIG_XENO_REGISTRY_ROOT is OFF
CONFIG_XENO_TLSF is OFF
CONFIG_XENO_VALGRIND_API is OFF
CONFIG_XENO_WORKAROUND_CONDVAR_PI is OFF
CONFIG_XENO_X86_VSYSCALL is OFF
---
PTHREAD_STACK_DEFAULT=65536
AUTOMATIC_BOOTSTRAP=0


Mit freundlichen Grüßen

*Jan Leupold*
Entwicklung
Development
-- 
---------------------------------------------------------------------------
R-S-I Logo <https://www.rsi-elektrotechnik.de/>

R-S-I Elektrotechnik GmbH & Co. KG
Woelkestraße 11
D-85301 Schweitenkirchen
www.rsi-elektrotechnik.de <https://www.rsi-elektrotechnik.de/>

Tel: +49 8444 9204-32
Fax: +49 8444 9204-50
leupold@rsi-elektrotechnik.de <mailto:leupold@rsi-elektrotechnik.de>
---------------------------------------------------------------------------

Amtsgericht Ingolstadt - GmbH: HRB 191328 - KG: HRA 170363
Geschäftsführer: Dr.-Ing. Michael Sorg, Dipl.-Ing. Franz Sorg
USt-IdNr.: DE 128592548




^ permalink raw reply	[flat|nested] 5+ messages in thread

* RE: pthread_cond_wait() never returns?
  2019-10-23 15:52 pthread_cond_wait() never returns? Jan Leupold
@ 2019-10-24  7:30 ` Lange Norbert
  2019-10-24  8:09   ` Jan Leupold
  0 siblings, 1 reply; 5+ messages in thread
From: Lange Norbert @ 2019-10-24  7:30 UTC (permalink / raw)
  To: Jan Leupold, Xenomai (xenomai@xenomai.org)

Signaling the waiting thread happens when you unlock the corresponding mutex,
You need to lock/unlock the mutex around the  pthread_cond_signal call.

Regards, Norbert

> -----Original Message-----
> From: Xenomai <xenomai-bounces@xenomai.org> On Behalf Of Jan Leupold
> via Xenomai
> Sent: Mittwoch, 23. Oktober 2019 17:52
> To: xenomai@xenomai.org
> Subject: pthread_cond_wait() never returns?
>
> NON-ANDRITZ SOURCE: BE CAUTIOUS WITH CONTENT, LINKS OR
> ATTACHMENTS.
>
>
> Hi all,
>
> I am trying to use pthread_cond_t in a Xenomai application. When compiling
> and linking with the flags from xeno-config, the condition variable stops
> working as expected. It seems as if pthread_cond_wait() would never
> return.
>
> Is this a known issue?
> (but most probably I think it's just my fault and I would be glad if someone
> could give me a hint)
>
> BTW, "cyclictest -M" (also uses pthread_cond_t to signal a refresh) does not
> work as expected either.
>
> Regards,
> Jan
>
> Using:
> ------------
> ipipe-arm, branched off at tag ipipe-core-4.19.33-arm-2 xenomai-3, branched
> off at 44065a107 (master April 2019) custom hardware, SAMA5D2 SoC
>
> The program:
> ----------------------
> #include <pthread.h>
> #include <stdio.h>
> #include <unistd.h>
>
> pthread_mutex_t mutex;
> pthread_cond_t cond;
>
> void*
> task(void* arg)
> {
>     (void) arg;
>     printf("task\n");
>     for (int i = 0; i < 3; ++i)
>     {
>         pthread_mutex_lock(&mutex);
>         pthread_cond_wait(&cond, &mutex);
>         pthread_mutex_unlock(&mutex);
>         printf("task: condition signaled (i=%d)\n", i);
>     }
>     printf("task: done\n");
>     return NULL;
> }
>
> int
> main()
> {
>     printf("main\n");
>
>     pthread_mutex_init(&mutex, NULL);
>     pthread_cond_init(&cond, NULL);
>
>     pthread_t t;
>     pthread_create(&t, NULL, task, NULL);
>
>     for (int i = 0; i < 3; ++i)
>     {
>         sleep(1);
>         pthread_cond_signal(&cond);
>         printf("main: signal(i=%d)\n", i);
>     }
>
>     pthread_join(t, NULL);
>
>     printf("main: done\n");
>     return 0;
> }
>
> When compiling without Xenomai the output is:
>
> main
> task
> main: signal(i=0)
> task: condition signaled (i=0)
> main: signal(i=1)
> task: condition signaled (i=1)
> main: signal(i=2)
> task: condition signaled (i=2)
> task: done
> main: done
>
> When compiling with Xenomai the output is:
>
> main
> task
> main: signal(i=0)
> main: signal(i=1)
> main: signal(i=2)
> ^C
> (pthread_join() never returns)
>
> The difference in Makefile.am:
> ------------------------------
>
> bin_PROGRAMS = test-condition-xeno test-condition-linux
>
> test_condition_linux_SOURCES = condition_c.c
> test_condition_linux_LDFLAGS = -pthread
>
> test_condition_xeno_SOURCES = condition_c.c
> test_condition_xeno_CFLAGS = $(shell xeno-config --skin=posix --cflags)
> test_condition_xeno_LDADD = $(shell xeno-config --skin=posix --ldflags)
>
> Output from --dump-config:
> --------------------------
> based on Xenomai/cobalt v3.1-devel -- #94e729d53 (2019-06-03 13:32:22
> +0200)
> CONFIG_MMU=1
> CONFIG_XENO_BUILD_ARGS=" '--build=x86_64-linux'
> '--host=arm-poky-linux-gnueabi' '--target=arm-poky-linux-gnueabi'
> '--prefix=/usr' '--exec_prefix=/usr' '--bindir=/usr/bin'
> '--sbindir=/usr/sbin' '--libexecdir=/usr/libexec' '--datadir=/usr/share'
> '--sysconfdir=/etc' '--sharedstatedir=/com' '--localstatedir=/var'
> '--libdir=/usr/lib' '--includedir=/usr/include/xenomai'
> '--oldincludedir=/usr/include/xenomai' '--infodir=/usr/share/info'
> '--mandir=/usr/share/man' '--disable-silent-rules'
> '--with-libtool-sysroot=/home/jan/yocto/aertronic2.0-io/build-
> betrieb/tmp/work/cortexa5t2hf-vfp-poky-linux-gnueabi/xenomai/3+git999-
> r0/recipe-sysroot'
> '--disable-static' '--disable-async-cancel' '--disable-clock-monotonic-raw'
> '--with-core=cobalt' '--enable-debug=symbols' '--disable-dlopen-libs'
> '--disable-doc-build' '--disable-fortify' '--disable-lores-clock'
> '--disable-pshared' '--disable-registry' '--disable-smp' '--disable-tls'
> 'build_alias=x86_64-linux' 'host_alias=arm-poky-linux-gnueabi'
> 'target_alias=arm-poky-linux-gnueabi' 'CC=arm-poky-linux-gnueabi-gcc -
> mthumb -mfpu=vfp -mfloat-abi=hard -mcpu=cortex-a5 -fstack-protector-
> strong
>  -D_FORTIFY_SOURCE=2 -Wformat -Wformat-security -Werror=format-
> security --sysroot=/home/jan/yocto/aertronic2.0-io/build-
> betrieb/tmp/work/cortexa5t2hf-vfp-poky-linux-gnueabi/xenomai/3+git999-
> r0/recipe-sysroot'
> 'CFLAGS= -O2 -pipe -g -feliminate-unused-debug-types
> -fmacro-prefix-map=/home/jan/yocto/aertronic2.0-io/build-
> betrieb/tmp/work/cortexa5t2hf-vfp-poky-linux-gnueabi/xenomai/3+git999-
> r0=/usr/src/debug/xenomai/3+git999-r0
>
> -fdebug-prefix-map=/home/jan/yocto/aertronic2.0-io/build-
> betrieb/tmp/work/cortexa5t2hf-vfp-poky-linux-gnueabi/xenomai/3+git999-
> r0=/usr/src/debug/xenomai/3+git999-r0
>
> -fdebug-prefix-map=/home/jan/yocto/aertronic2.0-io/build-
> betrieb/tmp/work/cortexa5t2hf-vfp-poky-linux-gnueabi/xenomai/3+git999-
> r0/recipe-sysroot=
>
> -fdebug-prefix-map=/home/jan/yocto/aertronic2.0-io/build-
> betrieb/tmp/work/cortexa5t2hf-vfp-poky-linux-gnueabi/xenomai/3+git999-
> r0/recipe-sysroot-native=
> ' 'LDFLAGS=-Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed -fstack-protector-
> strong -Wl,-z,relro,-z,now' 'CPPFLAGS='
> 'CPP=arm-poky-linux-gnueabi-gcc -E
> --sysroot=/home/jan/yocto/aertronic2.0-io/build-
> betrieb/tmp/work/cortexa5t2hf-vfp-poky-linux-gnueabi/xenomai/3+git999-
> r0/recipe-sysroot
>  -mthumb -mfpu=vfp -mfloat-abi=hard -mcpu=cortex-a5 -fstack-protector-
> strong  -D_FORTIFY_SOURCE=2 -Wformat -Wformat-security -
> Werror=format-security'
> 'PKG_CONFIG_PATH=/home/jan/yocto/aertronic2.0-io/build-
> betrieb/tmp/work/cortexa5t2hf-vfp-poky-linux-gnueabi/xenomai/3+git999-
> r0/recipe-sysroot/usr/lib/pkgconfig:/home/jan/yocto/aertronic2.0-io/build-
> betrieb/tmp/work/cortexa5t2hf-vfp-poky-linux-gnueabi/xenomai/3+git999-
> r0/recipe-sysroot/usr/share/pkgconfig'
> 'PKG_CONFIG_LIBDIR=/home/jan/yocto/aertronic2.0-io/build-
> betrieb/tmp/work/cortexa5t2hf-vfp-poky-linux-gnueabi/xenomai/3+git999-
> r0/recipe-sysroot/usr/lib/pkgconfig'"
> CONFIG_XENO_BUILD_STRING="x86_64-pc-linux-gnu"
> CONFIG_XENO_COBALT=1
> CONFIG_XENO_COMPILER="gcc version 9.2.0 (GCC) "
> CONFIG_XENO_DEFAULT_PERIOD=1000000
> CONFIG_XENO_FORTIFY=1
> CONFIG_XENO_HEAPMEM=1
> CONFIG_XENO_HOST_STRING="arm-poky-linux-gnueabi"
> CONFIG_XENO_LORES_CLOCK_DISABLED=1
> CONFIG_XENO_PREFIX="/usr"
> CONFIG_XENO_REVISION_LEVEL=90
> CONFIG_XENO_SANITY=1
> CONFIG_XENO_TLS_MODEL="initial-exec"
> CONFIG_XENO_UAPI_LEVEL=15
> CONFIG_XENO_VERSION_MAJOR=3
> CONFIG_XENO_VERSION_MINOR=0
> CONFIG_XENO_VERSION_STRING="3.1-devel"
> ---
> CONFIG_SMP is OFF
> CONFIG_XENO_ASYNC_CANCEL is OFF
> CONFIG_XENO_COPPERPLATE_CLOCK_RESTRICTED is OFF
> CONFIG_XENO_DEBUG is OFF CONFIG_XENO_DEBUG_FULL is OFF
> CONFIG_XENO_LAZY_SETSCHED is OFF CONFIG_XENO_LIBS_DLOPEN is OFF
> CONFIG_XENO_MERCURY is OFF CONFIG_XENO_PSHARED is OFF
> CONFIG_XENO_RAW_CLOCK_ENABLED is OFF CONFIG_XENO_REGISTRY is
> OFF CONFIG_XENO_REGISTRY_ROOT is OFF CONFIG_XENO_TLSF is OFF
> CONFIG_XENO_VALGRIND_API is OFF
> CONFIG_XENO_WORKAROUND_CONDVAR_PI is OFF
> CONFIG_XENO_X86_VSYSCALL is OFF
> ---
> PTHREAD_STACK_DEFAULT=65536
> AUTOMATIC_BOOTSTRAP=0
>
>
> Mit freundlichen Grüßen
>
> *Jan Leupold*
> Entwicklung
> Development
> --
> ---------------------------------------------------------------------------
> R-S-I Logo <https://www.rsi-elektrotechnik.de/>
>
> R-S-I Elektrotechnik GmbH & Co. KG
> Woelkestraße 11
> D-85301 Schweitenkirchen
> www.rsi-elektrotechnik.de <https://www.rsi-elektrotechnik.de/>
>
> Tel: +49 8444 9204-32
> Fax: +49 8444 9204-50
> leupold@rsi-elektrotechnik.de <mailto:leupold@rsi-elektrotechnik.de>
> ---------------------------------------------------------------------------
>
> Amtsgericht Ingolstadt - GmbH: HRB 191328 - KG: HRA 170363
> Geschäftsführer: Dr.-Ing. Michael Sorg, Dipl.-Ing. Franz Sorg
> USt-IdNr.: DE 128592548
>
>

________________________________

This message and any attachments are solely for the use of the intended recipients. They may contain privileged and/or confidential information or other information protected from disclosure. If you are not an intended recipient, you are hereby notified that you received this email in error and that any review, dissemination, distribution or copying of this email and any attachment is strictly prohibited. If you have received this email in error, please contact the sender and delete the message and any attachment from your system.

ANDRITZ HYDRO GmbH


Rechtsform/ Legal form: Gesellschaft mit beschränkter Haftung / Corporation

Firmensitz/ Registered seat: Wien

Firmenbuchgericht/ Court of registry: Handelsgericht Wien

Firmenbuchnummer/ Company registration: FN 61833 g

DVR: 0605077

UID-Nr.: ATU14756806


Thank You
________________________________

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: pthread_cond_wait() never returns?
  2019-10-24  7:30 ` Lange Norbert
@ 2019-10-24  8:09   ` Jan Leupold
  2019-10-24 10:20     ` Jan Kiszka
  2019-10-24 10:47     ` Giulio Moro
  0 siblings, 2 replies; 5+ messages in thread
From: Jan Leupold @ 2019-10-24  8:09 UTC (permalink / raw)
  To: Lange Norbert, Xenomai (xenomai@xenomai.org)

Great, now it works, thanks a lot!!

I just realised that not locking the mutex for pthread_cond_signal() is not
a good practice
(https://stackoverflow.com/questions/4544234/calling-pthread-cond-signal-without-locking-mutex)
... but as it works most of the time with non-Xenomai pthread_cond_t it
might be worth a comment in
https://xenomai.org/documentation/xenomai-3/html/xeno3prm/group__cobalt__api__cond.html
and/or
https://gitlab.denx.de/Xenomai/xenomai/wikis/Porting_To_Xenomai_POSIX#static-mutex-and-condition-variables-initializations

Regards,
Jan

Am 24.10.19 um 09:30 schrieb Lange Norbert:
> Signaling the waiting thread happens when you unlock the corresponding mutex,
> You need to lock/unlock the mutex around the  pthread_cond_signal call.
> 
> Regards, Norbert
> 
>> -----Original Message-----
>> From: Xenomai <xenomai-bounces@xenomai.org> On Behalf Of Jan Leupold
>> via Xenomai
>> Sent: Mittwoch, 23. Oktober 2019 17:52
>> To: xenomai@xenomai.org
>> Subject: pthread_cond_wait() never returns?
>>
>> NON-ANDRITZ SOURCE: BE CAUTIOUS WITH CONTENT, LINKS OR
>> ATTACHMENTS.
>>
>>
>> Hi all,
>>
>> I am trying to use pthread_cond_t in a Xenomai application. When compiling
>> and linking with the flags from xeno-config, the condition variable stops
>> working as expected. It seems as if pthread_cond_wait() would never
>> return.
>>
>> Is this a known issue?
>> (but most probably I think it's just my fault and I would be glad if someone
>> could give me a hint)
>>
>> BTW, "cyclictest -M" (also uses pthread_cond_t to signal a refresh) does not
>> work as expected either.
>>
>> Regards,
>> Jan
>>
>> Using:
>> ------------
>> ipipe-arm, branched off at tag ipipe-core-4.19.33-arm-2 xenomai-3, branched
>> off at 44065a107 (master April 2019) custom hardware, SAMA5D2 SoC
>>
>> The program:
>> ----------------------
>> #include <pthread.h>
>> #include <stdio.h>
>> #include <unistd.h>
>>
>> pthread_mutex_t mutex;
>> pthread_cond_t cond;
>>
>> void*
>> task(void* arg)
>> {
>>     (void) arg;
>>     printf("task\n");
>>     for (int i = 0; i < 3; ++i)
>>     {
>>         pthread_mutex_lock(&mutex);
>>         pthread_cond_wait(&cond, &mutex);
>>         pthread_mutex_unlock(&mutex);
>>         printf("task: condition signaled (i=%d)\n", i);
>>     }
>>     printf("task: done\n");
>>     return NULL;
>> }
>>
>> int
>> main()
>> {
>>     printf("main\n");
>>
>>     pthread_mutex_init(&mutex, NULL);
>>     pthread_cond_init(&cond, NULL);
>>
>>     pthread_t t;
>>     pthread_create(&t, NULL, task, NULL);
>>
>>     for (int i = 0; i < 3; ++i)
>>     {
>>         sleep(1);
>>         pthread_cond_signal(&cond);
>>         printf("main: signal(i=%d)\n", i);
>>     }
>>
>>     pthread_join(t, NULL);
>>
>>     printf("main: done\n");
>>     return 0;
>> }
>>
>> When compiling without Xenomai the output is:
>>
>> main
>> task
>> main: signal(i=0)
>> task: condition signaled (i=0)
>> main: signal(i=1)
>> task: condition signaled (i=1)
>> main: signal(i=2)
>> task: condition signaled (i=2)
>> task: done
>> main: done
>>
>> When compiling with Xenomai the output is:
>>
>> main
>> task
>> main: signal(i=0)
>> main: signal(i=1)
>> main: signal(i=2)
>> ^C
>> (pthread_join() never returns)
>>
>> The difference in Makefile.am:
>> ------------------------------
>>
>> bin_PROGRAMS = test-condition-xeno test-condition-linux
>>
>> test_condition_linux_SOURCES = condition_c.c
>> test_condition_linux_LDFLAGS = -pthread
>>
>> test_condition_xeno_SOURCES = condition_c.c
>> test_condition_xeno_CFLAGS = $(shell xeno-config --skin=posix --cflags)
>> test_condition_xeno_LDADD = $(shell xeno-config --skin=posix --ldflags)
>>
>> Output from --dump-config:
>> --------------------------
>> based on Xenomai/cobalt v3.1-devel -- #94e729d53 (2019-06-03 13:32:22
>> +0200)
>> CONFIG_MMU=1
>> CONFIG_XENO_BUILD_ARGS=" '--build=x86_64-linux'
>> '--host=arm-poky-linux-gnueabi' '--target=arm-poky-linux-gnueabi'
>> '--prefix=/usr' '--exec_prefix=/usr' '--bindir=/usr/bin'
>> '--sbindir=/usr/sbin' '--libexecdir=/usr/libexec' '--datadir=/usr/share'
>> '--sysconfdir=/etc' '--sharedstatedir=/com' '--localstatedir=/var'
>> '--libdir=/usr/lib' '--includedir=/usr/include/xenomai'
>> '--oldincludedir=/usr/include/xenomai' '--infodir=/usr/share/info'
>> '--mandir=/usr/share/man' '--disable-silent-rules'
>> '--with-libtool-sysroot=/home/jan/yocto/aertronic2.0-io/build-
>> betrieb/tmp/work/cortexa5t2hf-vfp-poky-linux-gnueabi/xenomai/3+git999-
>> r0/recipe-sysroot'
>> '--disable-static' '--disable-async-cancel' '--disable-clock-monotonic-raw'
>> '--with-core=cobalt' '--enable-debug=symbols' '--disable-dlopen-libs'
>> '--disable-doc-build' '--disable-fortify' '--disable-lores-clock'
>> '--disable-pshared' '--disable-registry' '--disable-smp' '--disable-tls'
>> 'build_alias=x86_64-linux' 'host_alias=arm-poky-linux-gnueabi'
>> 'target_alias=arm-poky-linux-gnueabi' 'CC=arm-poky-linux-gnueabi-gcc -
>> mthumb -mfpu=vfp -mfloat-abi=hard -mcpu=cortex-a5 -fstack-protector-
>> strong
>>  -D_FORTIFY_SOURCE=2 -Wformat -Wformat-security -Werror=format-
>> security --sysroot=/home/jan/yocto/aertronic2.0-io/build-
>> betrieb/tmp/work/cortexa5t2hf-vfp-poky-linux-gnueabi/xenomai/3+git999-
>> r0/recipe-sysroot'
>> 'CFLAGS= -O2 -pipe -g -feliminate-unused-debug-types
>> -fmacro-prefix-map=/home/jan/yocto/aertronic2.0-io/build-
>> betrieb/tmp/work/cortexa5t2hf-vfp-poky-linux-gnueabi/xenomai/3+git999-
>> r0=/usr/src/debug/xenomai/3+git999-r0
>>
>> -fdebug-prefix-map=/home/jan/yocto/aertronic2.0-io/build-
>> betrieb/tmp/work/cortexa5t2hf-vfp-poky-linux-gnueabi/xenomai/3+git999-
>> r0=/usr/src/debug/xenomai/3+git999-r0
>>
>> -fdebug-prefix-map=/home/jan/yocto/aertronic2.0-io/build-
>> betrieb/tmp/work/cortexa5t2hf-vfp-poky-linux-gnueabi/xenomai/3+git999-
>> r0/recipe-sysroot=
>>
>> -fdebug-prefix-map=/home/jan/yocto/aertronic2.0-io/build-
>> betrieb/tmp/work/cortexa5t2hf-vfp-poky-linux-gnueabi/xenomai/3+git999-
>> r0/recipe-sysroot-native=
>> ' 'LDFLAGS=-Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed -fstack-protector-
>> strong -Wl,-z,relro,-z,now' 'CPPFLAGS='
>> 'CPP=arm-poky-linux-gnueabi-gcc -E
>> --sysroot=/home/jan/yocto/aertronic2.0-io/build-
>> betrieb/tmp/work/cortexa5t2hf-vfp-poky-linux-gnueabi/xenomai/3+git999-
>> r0/recipe-sysroot
>>  -mthumb -mfpu=vfp -mfloat-abi=hard -mcpu=cortex-a5 -fstack-protector-
>> strong  -D_FORTIFY_SOURCE=2 -Wformat -Wformat-security -
>> Werror=format-security'
>> 'PKG_CONFIG_PATH=/home/jan/yocto/aertronic2.0-io/build-
>> betrieb/tmp/work/cortexa5t2hf-vfp-poky-linux-gnueabi/xenomai/3+git999-
>> r0/recipe-sysroot/usr/lib/pkgconfig:/home/jan/yocto/aertronic2.0-io/build-
>> betrieb/tmp/work/cortexa5t2hf-vfp-poky-linux-gnueabi/xenomai/3+git999-
>> r0/recipe-sysroot/usr/share/pkgconfig'
>> 'PKG_CONFIG_LIBDIR=/home/jan/yocto/aertronic2.0-io/build-
>> betrieb/tmp/work/cortexa5t2hf-vfp-poky-linux-gnueabi/xenomai/3+git999-
>> r0/recipe-sysroot/usr/lib/pkgconfig'"
>> CONFIG_XENO_BUILD_STRING="x86_64-pc-linux-gnu"
>> CONFIG_XENO_COBALT=1
>> CONFIG_XENO_COMPILER="gcc version 9.2.0 (GCC) "
>> CONFIG_XENO_DEFAULT_PERIOD=1000000
>> CONFIG_XENO_FORTIFY=1
>> CONFIG_XENO_HEAPMEM=1
>> CONFIG_XENO_HOST_STRING="arm-poky-linux-gnueabi"
>> CONFIG_XENO_LORES_CLOCK_DISABLED=1
>> CONFIG_XENO_PREFIX="/usr"
>> CONFIG_XENO_REVISION_LEVEL=90
>> CONFIG_XENO_SANITY=1
>> CONFIG_XENO_TLS_MODEL="initial-exec"
>> CONFIG_XENO_UAPI_LEVEL=15
>> CONFIG_XENO_VERSION_MAJOR=3
>> CONFIG_XENO_VERSION_MINOR=0
>> CONFIG_XENO_VERSION_STRING="3.1-devel"
>> ---
>> CONFIG_SMP is OFF
>> CONFIG_XENO_ASYNC_CANCEL is OFF
>> CONFIG_XENO_COPPERPLATE_CLOCK_RESTRICTED is OFF
>> CONFIG_XENO_DEBUG is OFF CONFIG_XENO_DEBUG_FULL is OFF
>> CONFIG_XENO_LAZY_SETSCHED is OFF CONFIG_XENO_LIBS_DLOPEN is OFF
>> CONFIG_XENO_MERCURY is OFF CONFIG_XENO_PSHARED is OFF
>> CONFIG_XENO_RAW_CLOCK_ENABLED is OFF CONFIG_XENO_REGISTRY is
>> OFF CONFIG_XENO_REGISTRY_ROOT is OFF CONFIG_XENO_TLSF is OFF
>> CONFIG_XENO_VALGRIND_API is OFF
>> CONFIG_XENO_WORKAROUND_CONDVAR_PI is OFF
>> CONFIG_XENO_X86_VSYSCALL is OFF
>> ---
>> PTHREAD_STACK_DEFAULT=65536
>> AUTOMATIC_BOOTSTRAP=0
>>
>>
>> Mit freundlichen Grüßen
>>
>> *Jan Leupold*
>> Entwicklung
>> Development
>> --
>> ---------------------------------------------------------------------------
>> R-S-I Logo <https://www.rsi-elektrotechnik.de/>
>>
>> R-S-I Elektrotechnik GmbH & Co. KG
>> Woelkestraße 11
>> D-85301 Schweitenkirchen
>> www.rsi-elektrotechnik.de <https://www.rsi-elektrotechnik.de/>
>>
>> Tel: +49 8444 9204-32
>> Fax: +49 8444 9204-50
>> leupold@rsi-elektrotechnik.de <mailto:leupold@rsi-elektrotechnik.de>
>> ---------------------------------------------------------------------------
>>
>> Amtsgericht Ingolstadt - GmbH: HRB 191328 - KG: HRA 170363
>> Geschäftsführer: Dr.-Ing. Michael Sorg, Dipl.-Ing. Franz Sorg
>> USt-IdNr.: DE 128592548
>>
>>
> 
> ________________________________
> 
> This message and any attachments are solely for the use of the intended recipients. They may contain privileged and/or confidential information or other information protected from disclosure. If you are not an intended recipient, you are hereby notified that you received this email in error and that any review, dissemination, distribution or copying of this email and any attachment is strictly prohibited. If you have received this email in error, please contact the sender and delete the message and any attachment from your system.
> 
> ANDRITZ HYDRO GmbH
> 
> 
> Rechtsform/ Legal form: Gesellschaft mit beschränkter Haftung / Corporation
> 
> Firmensitz/ Registered seat: Wien
> 
> Firmenbuchgericht/ Court of registry: Handelsgericht Wien
> 
> Firmenbuchnummer/ Company registration: FN 61833 g
> 
> DVR: 0605077
> 
> UID-Nr.: ATU14756806
> 
> 
> Thank You
> ________________________________
> 




^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: pthread_cond_wait() never returns?
  2019-10-24  8:09   ` Jan Leupold
@ 2019-10-24 10:20     ` Jan Kiszka
  2019-10-24 10:47     ` Giulio Moro
  1 sibling, 0 replies; 5+ messages in thread
From: Jan Kiszka @ 2019-10-24 10:20 UTC (permalink / raw)
  To: Jan Leupold, Lange Norbert, Xenomai (xenomai@xenomai.org)

On 24.10.19 10:09, Jan Leupold via Xenomai wrote:
> Great, now it works, thanks a lot!!
>
> I just realised that not locking the mutex for pthread_cond_signal() is not
> a good practice
> (https://stackoverflow.com/questions/4544234/calling-pthread-cond-signal-without-locking-mutex)
> ... but as it works most of the time with non-Xenomai pthread_cond_t it
> might be worth a comment in
> https://xenomai.org/documentation/xenomai-3/html/xeno3prm/group__cobalt__api__cond.html
> and/or
> https://gitlab.denx.de/Xenomai/xenomai/wikis/Porting_To_Xenomai_POSIX#static-mutex-and-condition-variables-initializations

The primary issue of you pattern is that is lacks a condition check
against a shared state. The whole point of the mutex is to protect that
check against the update of the state.

"When using condition variables there is always a Boolean predicate
involving shared variables associated with each condition wait that is
true if the thread should proceed. Spurious wakeups from  the
pthread_cond_timedwait() or  pthread_cond_wait()  functions  may  occur.
 Since  the return from pthread_cond_timedwait() or pthread_cond_wait()
does not imply anything about the value of this predicate, the predicate
should be re-evaluated upon such return."

Jan


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: pthread_cond_wait() never returns?
  2019-10-24  8:09   ` Jan Leupold
  2019-10-24 10:20     ` Jan Kiszka
@ 2019-10-24 10:47     ` Giulio Moro
  1 sibling, 0 replies; 5+ messages in thread
From: Giulio Moro @ 2019-10-24 10:47 UTC (permalink / raw)
  To: Jan Leupold, Lange Norbert, Xenomai (xenomai@xenomai.org)

A previous conversation on the topic can be found here https://xenomai.org/pipermail/xenomai/2017-October/037758.html

Jan Leupold via Xenomai wrote:
> I just realised that not locking the mutex for pthread_cond_signal() is not
> a good practice

I don't necessarily agree with this. There are cases where this behaviour is totally acceptable. For instance, you may have a high-priority periodic RT thread that unconditionally signals a lower-priority thread at the end of each periodic execution. For the purpose of argument, the hi-prio thread is filling up a queue with some data and the job of the lo-prio thread is to process all the data in the queue. The deadlines for the lo-prio thread are not strict, and it is ok for it to be done a few periods of the hi-prio thread later. In this case, you ultimately do not care about how many times the lower-priority thread runs.

Best,
Giulio

Jan Leupold via Xenomai wrote:
> Great, now it works, thanks a lot!!
> 
> I just realised that not locking the mutex for pthread_cond_signal() is not
> a good practice
> (https://stackoverflow.com/questions/4544234/calling-pthread-cond-signal-without-locking-mutex
> ... but as it works most of the time with non-Xenomai pthread_cond_t it
> might be worth a comment in
> https://xenomai.org/documentation/xenomai-3/html/xeno3prm/group__cobalt__api__cond.html
> and/or
> https://gitlab.denx.de/Xenomai/xenomai/wikis/Porting_To_Xenomai_POSIX#static-mutex-and-condition-variables-initializations
> 
> Regards,
> Jan
> 
> Am 24.10.19 um 09:30 schrieb Lange Norbert:
>> Signaling the waiting thread happens when you unlock the corresponding mutex,
>> You need to lock/unlock the mutex around the  pthread_cond_signal call.
>>
>> Regards, Norbert
>>
>>> -----Original Message-----
>>> From: Xenomai <xenomai-bounces@xenomai.org> On Behalf Of Jan Leupold
>>> via Xenomai
>>> Sent: Mittwoch, 23. Oktober 2019 17:52
>>> To: xenomai@xenomai.org
>>> Subject: pthread_cond_wait() never returns?
>>>
>>> NON-ANDRITZ SOURCE: BE CAUTIOUS WITH CONTENT, LINKS OR
>>> ATTACHMENTS.
>>>
>>>
>>> Hi all,
>>>
>>> I am trying to use pthread_cond_t in a Xenomai application. When compiling
>>> and linking with the flags from xeno-config, the condition variable stops
>>> working as expected. It seems as if pthread_cond_wait() would never
>>> return.
>>>
>>> Is this a known issue?
>>> (but most probably I think it's just my fault and I would be glad if someone
>>> could give me a hint)
>>>
>>> BTW, "cyclictest -M" (also uses pthread_cond_t to signal a refresh) does not
>>> work as expected either.
>>>
>>> Regards,
>>> Jan
>>>
>>> Using:
>>> ------------
>>> ipipe-arm, branched off at tag ipipe-core-4.19.33-arm-2 xenomai-3, branched
>>> off at 44065a107 (master April 2019) custom hardware, SAMA5D2 SoC
>>>
>>> The program:
>>> ----------------------
>>> #include <pthread.h>
>>> #include <stdio.h>
>>> #include <unistd.h>
>>>
>>> pthread_mutex_t mutex;
>>> pthread_cond_t cond;
>>>
>>> void*
>>> task(void* arg)
>>> {
>>>      (void) arg;
>>>      printf("task\n");
>>>      for (int i = 0; i < 3; ++i)
>>>      {
>>>          pthread_mutex_lock(&mutex);
>>>          pthread_cond_wait(&cond, &mutex);
>>>          pthread_mutex_unlock(&mutex);
>>>          printf("task: condition signaled (i=%d)\n", i);
>>>      }
>>>      printf("task: done\n");
>>>      return NULL;
>>> }
>>>
>>> int
>>> main()
>>> {
>>>      printf("main\n");
>>>
>>>      pthread_mutex_init(&mutex, NULL);
>>>      pthread_cond_init(&cond, NULL);
>>>
>>>      pthread_t t;
>>>      pthread_create(&t, NULL, task, NULL);
>>>
>>>      for (int i = 0; i < 3; ++i)
>>>      {
>>>          sleep(1);
>>>          pthread_cond_signal(&cond);
>>>          printf("main: signal(i=%d)\n", i);
>>>      }
>>>
>>>      pthread_join(t, NULL);
>>>
>>>      printf("main: done\n");
>>>      return 0;
>>> }
>>>
>>> When compiling without Xenomai the output is:
>>>
>>> main
>>> task
>>> main: signal(i=0)
>>> task: condition signaled (i=0)
>>> main: signal(i=1)
>>> task: condition signaled (i=1)
>>> main: signal(i=2)
>>> task: condition signaled (i=2)
>>> task: done
>>> main: done
>>>
>>> When compiling with Xenomai the output is:
>>>
>>> main
>>> task
>>> main: signal(i=0)
>>> main: signal(i=1)
>>> main: signal(i=2)
>>> ^C
>>> (pthread_join() never returns)
>>>
>>> The difference in Makefile.am:
>>> ------------------------------
>>>
>>> bin_PROGRAMS = test-condition-xeno test-condition-linux
>>>
>>> test_condition_linux_SOURCES = condition_c.c
>>> test_condition_linux_LDFLAGS = -pthread
>>>
>>> test_condition_xeno_SOURCES = condition_c.c
>>> test_condition_xeno_CFLAGS = $(shell xeno-config --skin=posix --cflags)
>>> test_condition_xeno_LDADD = $(shell xeno-config --skin=posix --ldflags)
>>>
>>> Output from --dump-config:
>>> --------------------------
>>> based on Xenomai/cobalt v3.1-devel -- #94e729d53 (2019-06-03 13:32:22
>>> +0200)
>>> CONFIG_MMU=1
>>> CONFIG_XENO_BUILD_ARGS=" '--build=x86_64-linux'
>>> '--host=arm-poky-linux-gnueabi' '--target=arm-poky-linux-gnueabi'
>>> '--prefix=/usr' '--exec_prefix=/usr' '--bindir=/usr/bin'
>>> '--sbindir=/usr/sbin' '--libexecdir=/usr/libexec' '--datadir=/usr/share'
>>> '--sysconfdir=/etc' '--sharedstatedir=/com' '--localstatedir=/var'
>>> '--libdir=/usr/lib' '--includedir=/usr/include/xenomai'
>>> '--oldincludedir=/usr/include/xenomai' '--infodir=/usr/share/info'
>>> '--mandir=/usr/share/man' '--disable-silent-rules'
>>> '--with-libtool-sysroot=/home/jan/yocto/aertronic2.0-io/build-
>>> betrieb/tmp/work/cortexa5t2hf-vfp-poky-linux-gnueabi/xenomai/3+git999-
>>> r0/recipe-sysroot'
>>> '--disable-static' '--disable-async-cancel' '--disable-clock-monotonic-raw'
>>> '--with-core=cobalt' '--enable-debug=symbols' '--disable-dlopen-libs'
>>> '--disable-doc-build' '--disable-fortify' '--disable-lores-clock'
>>> '--disable-pshared' '--disable-registry' '--disable-smp' '--disable-tls'
>>> 'build_alias=x86_64-linux' 'host_alias=arm-poky-linux-gnueabi'
>>> 'target_alias=arm-poky-linux-gnueabi' 'CC=arm-poky-linux-gnueabi-gcc -
>>> mthumb -mfpu=vfp -mfloat-abi=hard -mcpu=cortex-a5 -fstack-protector-
>>> strong
>>>   -D_FORTIFY_SOURCE=2 -Wformat -Wformat-security -Werror=format-
>>> security --sysroot=/home/jan/yocto/aertronic2.0-io/build-
>>> betrieb/tmp/work/cortexa5t2hf-vfp-poky-linux-gnueabi/xenomai/3+git999-
>>> r0/recipe-sysroot'
>>> 'CFLAGS= -O2 -pipe -g -feliminate-unused-debug-types
>>> -fmacro-prefix-map=/home/jan/yocto/aertronic2.0-io/build-
>>> betrieb/tmp/work/cortexa5t2hf-vfp-poky-linux-gnueabi/xenomai/3+git999-
>>> r0=/usr/src/debug/xenomai/3+git999-r0
>>>
>>> -fdebug-prefix-map=/home/jan/yocto/aertronic2.0-io/build-
>>> betrieb/tmp/work/cortexa5t2hf-vfp-poky-linux-gnueabi/xenomai/3+git999-
>>> r0=/usr/src/debug/xenomai/3+git999-r0
>>>
>>> -fdebug-prefix-map=/home/jan/yocto/aertronic2.0-io/build-
>>> betrieb/tmp/work/cortexa5t2hf-vfp-poky-linux-gnueabi/xenomai/3+git999-
>>> r0/recipe-sysroot=
>>>
>>> -fdebug-prefix-map=/home/jan/yocto/aertronic2.0-io/build-
>>> betrieb/tmp/work/cortexa5t2hf-vfp-poky-linux-gnueabi/xenomai/3+git999-
>>> r0/recipe-sysroot-native=
>>> ' 'LDFLAGS=-Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed -fstack-protector-
>>> strong -Wl,-z,relro,-z,now' 'CPPFLAGS='
>>> 'CPP=arm-poky-linux-gnueabi-gcc -E
>>> --sysroot=/home/jan/yocto/aertronic2.0-io/build-
>>> betrieb/tmp/work/cortexa5t2hf-vfp-poky-linux-gnueabi/xenomai/3+git999-
>>> r0/recipe-sysroot
>>>   -mthumb -mfpu=vfp -mfloat-abi=hard -mcpu=cortex-a5 -fstack-protector-
>>> strong  -D_FORTIFY_SOURCE=2 -Wformat -Wformat-security -
>>> Werror=format-security'
>>> 'PKG_CONFIG_PATH=/home/jan/yocto/aertronic2.0-io/build-
>>> betrieb/tmp/work/cortexa5t2hf-vfp-poky-linux-gnueabi/xenomai/3+git999-
>>> r0/recipe-sysroot/usr/lib/pkgconfig:/home/jan/yocto/aertronic2.0-io/build-
>>> betrieb/tmp/work/cortexa5t2hf-vfp-poky-linux-gnueabi/xenomai/3+git999-
>>> r0/recipe-sysroot/usr/share/pkgconfig'
>>> 'PKG_CONFIG_LIBDIR=/home/jan/yocto/aertronic2.0-io/build-
>>> betrieb/tmp/work/cortexa5t2hf-vfp-poky-linux-gnueabi/xenomai/3+git999-
>>> r0/recipe-sysroot/usr/lib/pkgconfig'"
>>> CONFIG_XENO_BUILD_STRING="x86_64-pc-linux-gnu"
>>> CONFIG_XENO_COBALT=1
>>> CONFIG_XENO_COMPILER="gcc version 9.2.0 (GCC) "
>>> CONFIG_XENO_DEFAULT_PERIOD=1000000
>>> CONFIG_XENO_FORTIFY=1
>>> CONFIG_XENO_HEAPMEM=1
>>> CONFIG_XENO_HOST_STRING="arm-poky-linux-gnueabi"
>>> CONFIG_XENO_LORES_CLOCK_DISABLED=1
>>> CONFIG_XENO_PREFIX="/usr"
>>> CONFIG_XENO_REVISION_LEVEL=90
>>> CONFIG_XENO_SANITY=1
>>> CONFIG_XENO_TLS_MODEL="initial-exec"
>>> CONFIG_XENO_UAPI_LEVEL=15
>>> CONFIG_XENO_VERSION_MAJOR=3
>>> CONFIG_XENO_VERSION_MINOR=0
>>> CONFIG_XENO_VERSION_STRING="3.1-devel"
>>> ---
>>> CONFIG_SMP is OFF
>>> CONFIG_XENO_ASYNC_CANCEL is OFF
>>> CONFIG_XENO_COPPERPLATE_CLOCK_RESTRICTED is OFF
>>> CONFIG_XENO_DEBUG is OFF CONFIG_XENO_DEBUG_FULL is OFF
>>> CONFIG_XENO_LAZY_SETSCHED is OFF CONFIG_XENO_LIBS_DLOPEN is OFF
>>> CONFIG_XENO_MERCURY is OFF CONFIG_XENO_PSHARED is OFF
>>> CONFIG_XENO_RAW_CLOCK_ENABLED is OFF CONFIG_XENO_REGISTRY is
>>> OFF CONFIG_XENO_REGISTRY_ROOT is OFF CONFIG_XENO_TLSF is OFF
>>> CONFIG_XENO_VALGRIND_API is OFF
>>> CONFIG_XENO_WORKAROUND_CONDVAR_PI is OFF
>>> CONFIG_XENO_X86_VSYSCALL is OFF
>>> ---
>>> PTHREAD_STACK_DEFAULT=65536
>>> AUTOMATIC_BOOTSTRAP=0
>>>
>>>
>>> Mit freundlichen Grüßen
>>>
>>> *Jan Leupold*
>>> Entwicklung
>>> Development
>>> --
>>> ---------------------------------------------------------------------------
>>> R-S-I Logo <https://www.rsi-elektrotechnik.de/>
>>>
>>> R-S-I Elektrotechnik GmbH & Co. KG
>>> Woelkestraße 11
>>> D-85301 Schweitenkirchen
>>> www.rsi-elektrotechnik.de <https://www.rsi-elektrotechnik.de/>
>>>
>>> Tel: +49 8444 9204-32
>>> Fax: +49 8444 9204-50
>>> leupold@rsi-elektrotechnik.de <mailto:leupold@rsi-elektrotechnik.de>
>>> ---------------------------------------------------------------------------
>>>
>>> Amtsgericht Ingolstadt - GmbH: HRB 191328 - KG: HRA 170363
>>> Geschäftsführer: Dr.-Ing. Michael Sorg, Dipl.-Ing. Franz Sorg
>>> USt-IdNr.: DE 128592548
>>>
>>>
>>
>> ________________________________
>>
>> This message and any attachments are solely for the use of the intended recipients. They may contain privileged and/or confidential information or other information protected from disclosure. If you are not an intended recipient, you are hereby notified that you received this email in error and that any review, dissemination, distribution or copying of this email and any attachment is strictly prohibited. If you have received this email in error, please contact the sender and delete the message and any attachment from your system.
>>
>> ANDRITZ HYDRO GmbH
>>
>>
>> Rechtsform/ Legal form: Gesellschaft mit beschränkter Haftung / Corporation
>>
>> Firmensitz/ Registered seat: Wien
>>
>> Firmenbuchgericht/ Court of registry: Handelsgericht Wien
>>
>> Firmenbuchnummer/ Company registration: FN 61833 g
>>
>> DVR: 0605077
>>
>> UID-Nr.: ATU14756806
>>
>>
>> Thank You
>> ________________________________
>>
> 
> 
> 

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2019-10-24 10:47 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-10-23 15:52 pthread_cond_wait() never returns? Jan Leupold
2019-10-24  7:30 ` Lange Norbert
2019-10-24  8:09   ` Jan Leupold
2019-10-24 10:20     ` Jan Kiszka
2019-10-24 10:47     ` Giulio Moro

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.