From: Andy Dougherty Date: Tue, 16 Mar 2004 16:38:58 +0000 (-0500) Subject: Re: Perl and Parrot disagree about sched_yield on Solaris X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=3bf55fe9d8000eec3ee2afa7455b435ffc747d7d;p=p5sagit%2Fp5-mst-13.2.git Re: Perl and Parrot disagree about sched_yield on Solaris Message-ID: p4raw-id: //depot/perl@22512 --- diff --git a/hints/solaris_2.sh b/hints/solaris_2.sh index 7ffc53c..c2a2ede 100644 --- a/hints/solaris_2.sh +++ b/hints/solaris_2.sh @@ -345,11 +345,25 @@ case "$usethreads" in $define|true|[yY]*) ccflags="-D_REENTRANT $ccflags" - sched_yield='yield' + # -lpthread overrides some lib C functions, so put it before c. set `echo X "$libswanted "| sed -e "s/ c / pthread c /"` shift libswanted="$*" + # sched_yield is available in the -lrt library. However, + # we can also pick up the equivalent yield() function in the + # normal C library. To avoid pulling in unnecessary + # libraries, we'll normally avoid sched_yield()/-lrt and + # just use yield(). However, we'll honor a command-line + # override : "-Dsched_yield=sched_yield". + # If we end up using sched_yield, we're going to need -lrt. + sched_yield=${sched_yield:-yield} + if test "$sched_yield" = "sched_yield"; then + set `echo X "$libswanted "| sed -e "s/ pthread / rt pthread /"` + shift + libswanted="$*" + fi + # On Solaris 2.6 x86 there is a bug with sigsetjmp() and siglongjmp() # when linked with the threads library, such that whatever positive # value you pass to siglongjmp(), sigsetjmp() returns 1.