Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 07 Dec 2000 21:55:07 +0000
From:      Brian Somers <brian@Awfulhak.org>
To:        Daniel Eischen <eischen@vigrid.com>
Cc:        Brian Somers <brian@Awfulhak.org>, "Jacques A. Vidrine" <n@nectar.com>, Robert Watson <rwatson@FreeBSD.ORG>, freebsd-arch@FreeBSD.ORG, brian@Awfulhak.org
Subject:   Re: Threads in the base system 
Message-ID:  <200012072155.eB7Lt7G51311@hak.lan.Awfulhak.org>
In-Reply-To: Message from Daniel Eischen <eischen@vigrid.com>  of "Wed, 06 Dec 2000 22:03:25 EST." <Pine.SUN.3.91.1001206213644.25911A-100000@pcnet1.pcnet.com> 

next in thread | previous in thread | raw e-mail | index | archive | help
> On Wed, 6 Dec 2000, Brian Somers wrote:
> > > On Wed, Dec 06, 2000 at 04:50:29PM -0500, Daniel Eischen wrote:
> > > > I was just [re]thinking about this.  When we get libpthread (work
> > > > has just started on this), then libc_r will eventually go away.
> > > > It's not clear yet whether libpthread will exist as a separate
> > > > entity or whether it will evolve from libc_r.  
> > > 
> > > For the ignorant (me), what is/will be the difference between libc_r and
> > > libpthread? 
> > 
> > And me !
> 
> OK, libc_r is libc + threads; an application can't be linked to both
> libc_r and libc.  libpthread is just the thread routines (at least
> those that aren't included in libc) and _is_ linked with libc.  When
> you have libpthread, the gcc option "-pthread" goes away (which we use
> to link to libc_r and prevent linking to libc), and you link with 
> "-lpthread".  In theory, libc_r could be an archive of libc and
> libpthread.
> 
> We may want to keep libc_r around for a while for compatibility
> reasons (without moving it to compat).  But at some point, libc_r
> will cease to be built the way it is currently being built (to
> include libc).  All the _THREAD_SAFE checks will be removed from
> libc.  Instead, libc will contain stub routines for the needed
> lock operations.  These will be weak symbols that will be overloaded
> with (non-weak symbol) routines of the same name in libpthread.
> When libpthread isn't linked in, then the null stub routines
> will be invoked.  If libpthread is linked in, then the real lock
> routines will be called.
> 
> > Besides, can't we put libpthread in libc_r's place when it goes away ?
> 
> Yes, but it can't be used (linked to) the same way nor named the
> same.
> 
> I guess my point is that applications in our base system that
> require threads will need !NOLIBC_R || !NOLIBPTHREAD.  And NOLIBC_R
> will eventually become the default some time after libpthread gets
> integrated.
> 
> It's a little confusing, but am I making sense?

Yes.

I'd tend to just say that we do it in these stages:

1.  Remove NOLIBC_R
2.  Eventually introduce libpthread
3.  Change all Makefiles that say -pthread to say -lpthread
4.  Blow away libc_r

With whatever gap is required between each step.  We *could* replace 
item 1 with ``don't build -pthread programs if NOLIBC_R'' and change 
that to NOLIBPTHREAD when item 3 is done, but I'd say it's better to 
encourage threads and not give these options.

> -- 
> Dan Eischen

-- 
Brian <brian@Awfulhak.org>                        <brian@[uk.]FreeBSD.org>
      <http://www.Awfulhak.org>;                   <brian@[uk.]OpenBSD.org>
Don't _EVER_ lose your sense of humour !




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?200012072155.eB7Lt7G51311>