Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 2 Nov 1999 20:24:25 -0800 (PST)
From:      John Polstra <jdp@polstra.com>
To:        eischen@vigrid.com
Cc:        arch@freebsd.org
Subject:   Re: Threads models and FreeBSD. (Next Step)
Message-ID:  <199911030424.UAA47266@vashon.polstra.com>
In-Reply-To: <381F85F2.BF6D5A2@vigrid.com>
References:  <Pine.BSF.4.10.9911020810090.2283-100000@current1.whistle.com> <381F78AF.D5073BFB@vigrid.com> <199911030016.RAA26726@mt.sri.com> <381F85F2.BF6D5A2@vigrid.com>

next in thread | previous in thread | raw e-mail | index | archive | help
In article <381F85F2.BF6D5A2@vigrid.com>,
Daniel M. Eischen <eischen@vigrid.com> wrote:
> Nate Williams wrote:
> > 
> > > For a thread bound to a LWP, you only notify the user level threads
> > > library if it blocks because it's time quantum expired (so the threads
> > > library can see if it is in a critical region).
> > 
> > They talk about this in the paper, and I don't like their solution.
> > Having to modify the compiler/assembler and such is not a workable
> > solution, IMO.
> 
> No, I didn't either, but you can still get the same thing by manually
> coding each routine.  You could also set flags instead with not too
> much more overhead.

I've just been looking at the paper, and I don't think they modified
the compiler or the assembler.  What they say is:

    We do this by delimiting, with special assembler labels, each
    critical section in the C source code for the user-level thread
    package; we then post-process the compiler-generated assembly
    code to make the copy.

I think the "delimiting, with special assembler labels" is simply
the addition of some asm statements to the C source code of their
libc_r threads kernel equivalent.  The second part, "post-process
the compiler-generated assembly code," is just a little program or
shell/awk/sed/perl script and some fancy Makefile rules.

All they are aiming for is a table of PC ranges that they can consult
at run time to determine whether the thread was in a critical section
when it blocked or was pre-empted.  That's easy to get without
modifying the compiler or assembler -- especially with ELF, where we
can put the table into a separate section.

John
-- 
  John Polstra                                               jdp@polstra.com
  John D. Polstra & Co., Inc.                        Seattle, Washington USA
  "No matter how cynical I get, I just can't keep up."        -- Nora Ephron




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




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