Hi!
RT + sched_yield() are not really good friends... sched_yield() messes the
work of the scheduler. Along with it, sched_tield() behaves in a different
way under CFS. To get the old behavior you have to:
echo 1 /proc/sys/kernel/sched_compat_yield
Luis
On Mon, Feb 18, 2008 at 01:16:16PM -0500, Nelson Castillo wrote:
| Hi.
|
| I'm using 2.6.23.14-rt14 on a i586 and I'm quite happy with the
| current results [1].
| I'm writing because I have a problem with a source code that I thought
| should work.
|
| http://svn.arhuaco.org/svn/src/junk/trunk/threads/cond-signal-test.c
|
| In a PC (Debian 2.6.24 686 with no RT patches) it prints 1000. In the
| realtime system it prints 1 or 0.
|
| # ./a.out
| 1
| # ./a.out
| 0
| # ./a.out
| 1
|
| If I do a sched_yield() right after releasing the mutex associated with
| the condition, the program prints 1000 as expected.
|
| void
| dosignal (void)
| {
| pthread_mutex_lock (cond_mutex);
| pthread_cond_signal(cond);
| pthread_mutex_unlock (cond_mutex);
|sched_yield(); // without this I get 0! with Linux and RT patches
| }
|
|
| So my questions are:
|
| * I am missing something?
| * If sched_yield() is the way to go, is it SMP safe?
|
| I did pthread_mutexattr_setprotocol(mutex_attr, PTHREAD_PRIO_INHERIT)
| and the syscall succedded but I still got 0 or 1. I think it doesn't
| matter in this case.
|
| Best regards,
| Nelson.-
|
| [1] http://wiki.freaks-unidos.net/weblogs/arhuaco/preempt_rt-test
|
| PS:
|
| I've tried this with Debian's GLIBC and with Openembedded.
|
| Debian:
|
| /lib/libc.so.6
| GNU C Library stable release version 2.7, by Roland McGrath et al.
| Copyright (C) 2007 Free Software Foundation, Inc.
| This is free software; see the source for copying conditions.
| There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
| PARTICULAR PURPOSE.
| Compiled by GNU CC version 4.2.3 20080102 (prerelease) (Debian 4.2.2-5).
| Compiled on a Linux 2.6.22.12 system on 2008-01-12.
| Available extensions:
| crypt add-on version 2.1 by Michael Glad and others
| GNU Libidn by Simon Josefsson
| Native POSIX Threads Library by Ulrich Drepper et al
| BIND-8.2.3-T5B
| For bug reporting instructions, please see:
| http://www.gnu.org/software/libc/bugs.html.
|
| OpenEmbedded:
|
| GNU C Library stable release version 2.5, by Roland McGrath et al.
| Copyright (C) 2006 Free Software Foundation, Inc.
| This is free software; see the source for copying conditions.
| There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
| PARTICULAR PURPOSE.
| Compiled by GNU CC version 4.1.2.
| Compiled on a Linux 2.6.22-3-686 system on 2008-01-09.
| Available extensions:
| crypt add-on version 2.1 by Michael Glad and others
| GNU libio by Per Bothner
| NIS(YP)/NIS+ NSS modules 0.19 by Thorsten Kukuk
| Native POSIX Threads Library by Ulrich Drepper et al
| BIND-8.2.3-T5B
| Thread-local storage support included.
| For bug reporting instructions, please see:
| http://www.gnu.org/software/libc/bugs.html
|
| --
| http://arhuaco.org
| -
| To unsubscribe from this list: send the line unsubscribe linux-rt-users in
| the body of a message to [EMAIL PROTECTED]
| More majordomo info at http://vger.kernel.org/majordomo-info.html
---end quoted text---
--
[ Luis Claudio R. GoncalvesBass - Gospel - RT ]
[ Fingerprint: 4FDD B8C4 3C59 34BD 8BE9 2696 7203 D980 A448 C8F8 ]
-
To unsubscribe from this list: send the line unsubscribe linux-rt-users in
the body of a message to [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html