Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 14 Nov 2002 19:51:41 +0000
From:      Doug Rabson <dfr@nlsystems.com>
To:        Marcel Moolenaar <marcel@xcllnt.net>
Cc:        cvs-committers@FreeBSD.org, cvs-all@FreeBSD.org
Subject:   Re: cvs commit: src/lib/libc/ia64/gen _setjmp.S
Message-ID:  <200211141951.41202.dfr@nlsystems.com>
In-Reply-To: <20021114194057.GA856@dhcp01.pn.xcllnt.net>
References:  <200211140640.gAE6eNq9016231@repoman.freebsd.org> <1037298535.19149.8.camel@builder02.qubesoft.com> <20021114194057.GA856@dhcp01.pn.xcllnt.net>

next in thread | previous in thread | raw e-mail | index | archive | help

On Thursday 14 November 2002 7:40 pm, Marcel Moolenaar wrote:
> On Thu, Nov 14, 2002 at 06:28:55PM +0000, Doug Rabson wrote:
> > > Why do you need a flushrs in longjmp() anyway?
> > > All you really need to achieve is that ar.bsp equals ar.bspstore
> > > before you set ar.bspstore, right?
> > > (note that the loadrs is missing a cover or an alloc)
> >
> > You would need a flushrs if you really wanted to use longjmp for
> > thread switching, otherwise you would lose the stacked registers of
> > the thread you were switching away from.
>
> But you need a setjmp to save that context, right? How would you
> otherwise return to the thread?

I've managed to reload my memory from magtape :-). To use setjmp/longjmp 
for thread switching, you would need to call flushrs from setjmp. That 
would simplify longjmp at the cost of severely pessimising setjmp.

>
> > > It's good to eventually optimize setjmp/longjmp for the common
> > > case, but at this time it's all we have and I think we'd better
> > > focus on being functionally complete.
> >
> > I don't think thread switching is (should be) part of the
> > functional specification of setjmp/longjmp.
>
> I don't disagree, but deischen's swapcontext stuff is not here yet
> and not having libc_r is hurting now.

I would rather do this right than break setjmp. Intel wrote the code 
that way for a good reason. Dan is close to being able to commit the 
syscall version of swapcontext, and we should be able to implement that 
for ia64 easily. FWIW, linux doesn't support setjmp/longjmp style 
thread switching.

-- 
Doug Rabson				Mail:  dfr@nlsystems.com
					Phone: +44 20 8348 6160



To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe cvs-all" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200211141951.41202.dfr>