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 majordomo@xxxxxxxxxxxxxxx | More majordomo info at http://vger.kernel.org/majordomo-info.html ---end quoted text--- -- [ Luis Claudio R. Goncalves Bass - 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 majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html