All of lore.kernel.org
 help / color / mirror / Atom feed
* sched_yield() needed for pthread_cond_signal(..) to work?
@ 2008-02-18 18:16 Nelson Castillo
  2008-02-18 18:25 ` Luis Claudio R. Goncalves
  2008-02-19  0:35 ` Michal Schmidt
  0 siblings, 2 replies; 5+ messages in thread
From: Nelson Castillo @ 2008-02-18 18:16 UTC (permalink / raw)
  To: linux-rt-users; +Cc: Andrés Calderón

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

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2008-02-19  1:51 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-02-18 18:16 sched_yield() needed for pthread_cond_signal(..) to work? Nelson Castillo
2008-02-18 18:25 ` Luis Claudio R. Goncalves
2008-02-18 20:24   ` Nelson Castillo
2008-02-19  0:35 ` Michal Schmidt
     [not found]   ` <371630906-1203382013-cardhu_decombobulator_blackberry.rim.net-2030994132-@bxe129.bisx.prod.on.blackberry>
2008-02-19  1:51     ` Nelson Castillo

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.