From mboxrd@z Thu Jan 1 00:00:00 1970 Message-ID: <49466EA0.3070108@domain.hid> Date: Mon, 15 Dec 2008 15:50:08 +0100 From: Jan Kiszka MIME-Version: 1.0 References: <20081215143435.15493.94798.stgit@domain.hid> <20081215143436.15493.65646.stgit@domain.hid> <49466DBF.9030403@domain.hid> In-Reply-To: <49466DBF.9030403@domain.hid> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Subject: Re: [Xenomai-core] [PATCH 3/6] POSIX: Optimize pthread_setschedparam fast path List-Id: "Xenomai life and development \(bug reports, patches, discussions\)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Gilles Chanteperdrix Cc: xenomai@xenomai.org Gilles Chanteperdrix wrote: > Jan Kiszka wrote: >> 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 >> --- >> >> 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..d2839c6 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_current != XN_NO_HANDLE && thread == pthread_self()) { > > I was under the impression that xeno_current was only correct with > HAVE__THREAD. Otherwise, I guess we should use xeno_get_current(), no? > Of course. -------> 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 --- 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..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()) { #ifdef HAVE___THREAD mode_buf = xeno_init_current_mode(); #else /* !HAVE___THREAD */