Wolfgang Grandegger wrote: > Wolfgang Grandegger wrote: >> Hi Gilles, >> >> Gilles Chanteperdrix wrote: >>> Wolfgang Grandegger wrote: >>>> I'm also puzzled why pthread_setschedparam() does make a mode switch >>>> to secondary mode (sometimes). >>> That is normal. The glibc caches threads priority value, so we have to >>> call __real_pthread_setschedparam to update them. This issue has been >>> solved differently on trunk, but unfortunately, we can not backport this >>> modification on v2.4.x branch. >> To get you right. With v2.4.x it is not possible with the POSIX skin to >> change the priority of a real-time thread in the primary mode without >> loosing determinism (because it will switch to secondary mode). What >> options do I have? > > I gave Xenomai trunk a try and pthread_setschedparam() does not switch > to secondary mode any more on my PowerPC test system. Nice, I just get > an Oops in thread_delete from time to time. More on that issue later. > For my ARM i.mx31 system, a need a few patches to get the Xenomai src's > compiled: > > Index: include/asm-generic/bits/bind.h > =================================================================== > --- include/asm-generic/bits/bind.h (revision 4450) > +++ include/asm-generic/bits/bind.h (working copy) > @@ -72,7 +72,7 @@ > err = XENOMAI_SYSCALL1(__xn_sys_current, ¤t); > if (err) { > fprintf(stderr, "Xenomai: error obtaining handle for current " > - "thread: %s\n", strerror(err)); > + "thread: %s\n", strerror(-err)); > exit(1); > } > __xeno_set_current(current); > Index: include/asm-arm/syscall.h > =================================================================== > --- include/asm-arm/syscall.h (revision 4450) > +++ include/asm-arm/syscall.h (working copy) > @@ -228,7 +228,7 @@ > volatile unsigned long long *const tscp = __xn_tscinfo.u.fr.tsc; > volatile unsigned *const counterp = __xn_tscinfo.u.fr.counter; > const unsigned mask = __xn_tscinfo.u.fr.mask; > - register unsigned long long after, before; > + register unsigned long long result; > unsigned counter; > > __asm__ ("ldmia %1, %M0\n": "=r"(result): "r"(tscp), "m"(*tscp)); > > > When I then start my application or cyclictest I get: > > -bash-3.2# ./cyclictest -n > Xenomai: error obtaining handle for current thread: Operation not permitted > > As the latency program works fine, it seems to be a problem with the > POSIX skin. Any idea what it is?
What version of gcc are you using ? When trying to get xenomai running on an ARM platform, I found out that gcc 4.3.1 and 4.3.2 have a bug on ARM which thrashes the parameters passed to some xenomai syscalls. -- Gilles. _______________________________________________ Xenomai-help mailing list Xenomai-help@gna.org https://mail.gna.org/listinfo/xenomai-help