Gilles Chanteperdrix wrote: > Jan Kiszka wrote: >> diff --git a/src/skins/posix/thread.c b/src/skins/posix/thread.c >> index 2ecb64f..46c49bf 100644 >> --- a/src/skins/posix/thread.c >> +++ b/src/skins/posix/thread.c >> @@ -37,11 +37,10 @@ static int linuxthreads; >> int __wrap_pthread_setschedparam(pthread_t thread, >> int policy, const struct sched_param *param) >> { >> - pthread_t myself = pthread_self(); >> unsigned long *mode_buf = NULL; >> int err, promoted; >> >> - if (thread == myself) { >> + if (xeno_get_current() != XN_NO_HANDLE && thread == pthread_self()) { > > Should not this be xeno_get_current() == XN_NO_HANDLE ? The thread has a > chance to be promoted only if it is not already shadowed.
Oh, hell. Friday-evening-on-the-train hack that hasn't been checked as it was so obvious... ---------> Optimize __wrap_pthread_setschedparam without HAVE___THREAD for the case that an already mapped shadow is modifying its own scheduling parameters. Signed-off-by: Jan Kiszka <jan.kis...@siemens.com> --- src/skins/posix/thread.c | 3 +-- 1 files changed, 1 insertions(+), 2 deletions(-) diff --git a/src/skins/posix/thread.c b/src/skins/posix/thread.c index 2ecb64f..5e04082 100644 --- a/src/skins/posix/thread.c +++ b/src/skins/posix/thread.c @@ -37,11 +37,10 @@ static int linuxthreads; int __wrap_pthread_setschedparam(pthread_t thread, int policy, const struct sched_param *param) { - pthread_t myself = pthread_self(); unsigned long *mode_buf = NULL; int err, promoted; - if (thread == myself) { + if (xeno_get_current() == XN_NO_HANDLE && thread == pthread_self()) { #ifdef HAVE___THREAD mode_buf = xeno_init_current_mode(); #else /* !HAVE___THREAD */ _______________________________________________ Xenomai-core mailing list Xenomai-core@gna.org https://mail.gna.org/listinfo/xenomai-core