xenomai 3.1/ipipe-core-4.19.128-cip28-arm-10.patch

Robert Berger xenomai.list at gmail.com
Sat Jul 4 20:59:16 CEST 2020


Hi,

I just took the latest and greatest stuff and built it with some Yocto 
dunfell/3.1.1 SDK for some 32 bit ARM i.mx6.

Xenomai/cobalt v3.1 -- #5714ceede (2020-02-04 16:06:11 +0100)

When I run xeno-test I get this:

./xeno-test
++ echo 0
++ testdir=/usr/local/xenomai/bin
++ /usr/local/xenomai/bin/smokey --run random_alloc_rounds=64 
pattern_check_rounds=64
arith OK
...
posix_clock OK
posix_cond OK
posix_fork OK
[  466.998532] [Xenomai] bad syscall <0x197>
posix_mutex OK
posix_select OK
...

0x197 (407) is not avail in 4.19[1], but in 5.4[2]

[1] 
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/arch/arm/tools/syscall.tbl?h=v4.19.131#n416

[2] 
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/arch/arm/tools/syscall.tbl?h=v5.4.50#n424 


The SDK was built against 5.4 kernel headers (which is the default for 
Yocto dunfell/3.1.1).

If I run a small C app (without xenomai) which calls this:

static void xeno_sleep_ms(unsigned int ms)
{                               /* < 1000 */
         struct timespec ts;

         ts.tv_sec = 0;
         ts.tv_nsec = ms * 1000000;
         clock_nanosleep(CLOCK_MONOTONIC, 0, &ts, NULL);
}

all is good both with 4.19.x and 4.5.kernel.

Can someone tell me tell me please where the bad syscall comes from?

It looks like someone calls clock_nanosleep_time64, but xenomai is 
developed against 4.19.x where this sycall does not exist, so my first 
idea would be that it comes from the glibc which was built against 5.4 
kernel headers. But the xenomai test case triggers it! I suspect some 
sleep_ms(1) in some weird combination with something but I am not sure 
about it.

[  251.080655] [Xenomai] bad syscall <0x197>

407     common  clock_nanosleep_time64          sys_clock_nanosleep

Please point me towards where to search further.

Regards,

Robert



More information about the Xenomai mailing list