On Tue, 16 Mar 2004, Nick Ing-Simmons wrote:
> Andrew Dougherty <[EMAIL PROTECTED]> writes:
> >Whilst trying to build ponie-2 on Solaris 8, I came across the following
> >issue: In order to use threads, both perl-5.[89].x and parrot need to
> >call some sort of yield() function.
> >
> >In parrot, sched_yield is used; this function is available in the -lrt
> >library, so the solaris hints file adds that in. There appears to be no
> >way to override this from the Configure.pl command line.
> >
> >In perl, the plain yield() function is used; this function is available in
> >the standard C library, so -lrt is not used. (Indeed, it's not even
> >mentioned in Configure.) The hints/solaris_2.sh file unconditionally sets
> >sched_yield='yield' (bad hints file! I'll supply a patch for that
> >separately.)
> >
> >Underneath it all, it doesn't matter -- both functions are the same on
> >Solaris -- but leaving things the way they are gives the following error
> >message for ponie-2:
>
> The worry might be that adding -lrt may have other side effects.
> Alan?
Alan's the one who recommended perl not bother with -lrt since it didn't
add anything useful. He removed it as part of a larger Solaris
loading/linking cleanup. I don't think there were any conflicts with
stuff in -lrt at the time, but avoiding dragging in unnecessary libraries
is usually a good idea all around, so his approach looks fine to me.
As far as I can tell, both parrot and perl have taken a sensible approach
to dealing with sched_yield(); they just don't play well together, and
neither is easily overrideable from the Configure command line. Since
each is ultimately supposed to be able to be embedded and extended, I
think each needs to be a bit more flexible.
> >Longer term, it'd probably be good for parrot to have yield() vs.
> >sched_yield() set by some Configure.pl-time variable. For now, it would
> >likely be sufficient to simply key off of perl5's $Config{sched_yield}.
> >
> >Similarly, perl's Configure/hints combination ought to be a bit more
> >flexible about yield() vs. sched_yield(). This would help make perl
> >slightly more flexible in adapting to being extended or embedded.
I can patch perl5's Configure/hints combination (and hence suggest a
work-around for ponie), but I think someone else ought to look at the
parrot side of things too.
--
Andy Dougherty [EMAIL PROTECTED]