Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 27 Oct 2006 13:49:22 +0400
From:      Ruslan Ermilov <ru@FreeBSD.org>
To:        Ivan Voras <ivoras@fer.hr>
Cc:        freebsd-current@FreeBSD.org
Subject:   Re: KSE, libpthread & libthr: almost newbie question
Message-ID:  <20061027094922.GC6613@rambler-co.ru>
In-Reply-To: <ehshjl$dsp$1@sea.gmane.org>
References:  <917908193.20061027102647@serebryakov.spb.ru> <ehshjl$dsp$1@sea.gmane.org>

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

--GZVR6ND4mMseVXL/
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

On Fri, Oct 27, 2006 at 10:56:21AM +0200, Ivan Voras wrote:
> Lev Serebryakov wrote:
> >Hello ,
> >
> >   I've was sure, that both libpthread and libthr use KSE to make=20
> >   multithreading. They use KSE in different ways: libpthread uses N:M=
=20
> >   model and libthr uses 1:1 model, but bot use KSE to work.
> >   How will be possible to use these libraries (read: multithreaded=20
> >   programs) when KSE will be optional, on kernel without KSE?!
>=20
> Yes, isn't KSE by definition "that thing that is scheduled in the kernel"?
>=20
KSE =3D=3D N:M threading

A 1:1 threading (libthr) is much simpler than N:M threading (libpthread),
and thus doesn't require KSE support in the kernel; see kse(2) manpage
for details.  Without the KSE option in the kernel, all kse(2) syscalls
will return EOPNOTSUPP, and a lot of code becomes redundant.

: /*
:  * Initialize global thread allocation resources.
:  */
: void
: threadinit(void)
: {
:=20
:         mtx_init(&tid_lock, "TID lock", NULL, MTX_DEF);
:         tid_unrhdr =3D new_unrhdr(PID_MAX + 1, INT_MAX, &tid_lock);
:=20
:         thread_zone =3D uma_zcreate("THREAD", sched_sizeof_thread(),
:             thread_ctor, thread_dtor, thread_init, thread_fini,
:             UMA_ALIGN_CACHE, 0);
: #ifdef KSE
:         ksegrp_zone =3D uma_zcreate("KSEGRP", sched_sizeof_ksegrp(),
:             ksegrp_ctor, NULL, NULL, NULL,
:             UMA_ALIGN_CACHE, 0);
:         kseinit();      /* set up kse specific stuff  e.g. upcall zone*/
: #endif
: }


Cheers,
--=20
Ruslan Ermilov
ru@FreeBSD.org
FreeBSD committer

--GZVR6ND4mMseVXL/
Content-Type: application/pgp-signature
Content-Disposition: inline

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.5 (FreeBSD)

iD8DBQFFQdYiqRfpzJluFF4RApfUAJ9Q/CXmYqRCBcZ/uhZsn3a0BOMEuwCgjSwZ
8wMPpRfHKZOwXwYdtQrIv+w=
=18KX
-----END PGP SIGNATURE-----

--GZVR6ND4mMseVXL/--



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