Re: KSE, libpthread & libthr: almost newbie question



Ruslan Ermilov wrote:
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 multithreading. They use KSE in different ways: libpthread uses N:M model and libthr uses 1:1 model, but bot use KSE to work.
How will be possible to use these libraries (read: multithreaded programs) when KSE will be optional, on kernel without KSE?!
Yes, isn't KSE by definition "that thing that is scheduled in the kernel"?

KSE == 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.


KSE is a misnomer that I abandoned long ago..
mostly it is the thread fairness code that is independent of what threading library is running (see the other email I just sent)
(or should be)


: /*
: * Initialize global thread allocation resources.
: */
: void
: threadinit(void)
: {
: : mtx_init(&tid_lock, "TID lock", NULL, MTX_DEF);
: tid_unrhdr = new_unrhdr(PID_MAX + 1, INT_MAX, &tid_lock);
: : thread_zone = uma_zcreate("THREAD", sched_sizeof_thread(),
: thread_ctor, thread_dtor, thread_init, thread_fini,
: UMA_ALIGN_CACHE, 0);
: #ifdef KSE
: ksegrp_zone = 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


The KSEGRP is a part of the fairness code in general and independent
of M:N and 1:1

: }


Cheers,
_______________________________________________
freebsd-current@xxxxxxxxxxx mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to "freebsd-current-unsubscribe@xxxxxxxxxxx"



Relevant Pages

  • Re: KSE, libpthread & libthr: almost newbie question
    ... They use KSE in different ways: libpthread uses N:M model and libthr uses 1:1 model, but bot use KSE to work. ... How will be possible to sue these libraries when KSE will be optional, on kernel without KSE?! ... The FreeBSD kernel actually implements a good three different threading models: ... Notice that this isn't just about code complexity, but also about scheduler overhead. ...
    (freebsd-current)
  • Re: KSE, libpthread & libthr: almost newbie question
    ... They use KSE in different ways: libpthread uses N:M model and libthr uses 1:1 model, but bot use KSE to work. ... How will be possible to sue these libraries when KSE will be optional, on kernel without KSE?! ... The FreeBSD kernel actually implements a good three different threading models: ... Notice that this isn't just about code complexity, but also about scheduler overhead. ...
    (freebsd-current)
  • HEADSUP: KSE support removed from the kernel.
    ... CURRENT is no longer going to support KSE threaded applications. ... As mentioned in UPDATING the following libmap.conf should work along with compat libs for old dynamically linked libraries: ... Statically linked binaries will no longer work. ... Remove kernel support for M:N threading. ...
    (freebsd-current)
  • Re: KSE, libpthread & libthr: almost newbie question
    ... that both libpthread and libthr use KSE to make multithreading. ... They use KSE in different ways: libpthread uses N:M model and libthr uses 1:1 model, but bot use KSE to work. ...
    (freebsd-current)
  • Re: KSE, libpthread & libthr: almost newbie question
    ... that both libpthread and libthr use KSE to make ... multithreading. ... They use KSE in different ways: libpthread uses N:M ... isn't KSE by definition "that thing that is scheduled in the kernel"? ...
    (freebsd-current)