diff --git a/en/kse/index.sgml b/en/kse/index.sgml index f7e356eed4..8df6489d19 100644 --- a/en/kse/index.sgml +++ b/en/kse/index.sgml @@ -1,179 +1,195 @@ - + %includes; Done"> In progress"> Stalled"> Not Started"> Resolved"> Unresolved"> %developers; ]> &header;

Contents

Overview

Kernel Scheduler Entities (KSE), is a kernel-supported threading system similar in design to Scheduler Activations [Anderson, et. al.]. It strikes a balance between user-level (1:N) and kernel-level (1:1) threading models, giving most of the advantages of both, and few of the disadvantages of either.

There are two halves of this project: kernel support and user support. The kernel support consists of modifications to the FreeBSD scheduler; The user half is a POSIX threads implementation which takes advantage of the extra facilities the kernel provides.

The goal is to replace the current user threading system provided by the libc_r library, and the -pthread gcc option.

Using KSE

All KSE development is being done in 5.0-CURRENT. No special kernel configuration options are required to build a kernel with the KSE-related changes (the changes are inextricable from the FreeBSD scheduler).

In order to use KSE in an application, you need to link it against libpthreads, which is not built by default. To build and install it on your system, either run make install from /usr/src/lib/libpthread (if you have sources installed on your system), or check out the libpthread module from cvs.

Linking an application against libpthread is straighforward. In its makefiles, change the -pthread option to -lpthread and relink. Alternatively, you can copy libpthread.so on top of libc_r.so, but this is not recommended until libpthread.so becomes a bit more stable.

Project Status

Following is an incomplete general list of tasks:

+ + + + + + + + + + + + + + + +
Module Task Responsible Last updated Status
libpthread Repo-copy the libpthread library from libc_r. cvs meister 16 September 2002 &status.done;
libpthread Use KSE to schedule processes. &a.mini; 30 October 2002 &status.done;
libpthread Schedule an idle context when appropriate. &a.mini; 2 November 2002 &status.wip;
kernel Implement POSIX-style reliable and informative signals. &a.jmallett; 3 November 2002 &status.wip;
libpthread Deliver signals to threads.   2 November 2002 &status.new;
libpthread Locking for SMP.   2 November 2002 &status.new;
kernel Locking for SMP.   2 November 2002 &status.new;
libpthread Launch multiple KSEs (one per CPU).   2 November 2002 &status.new;
libpthread Implement machine-dependant functions for non-x86 platforms.   2 November 2002 &status.new;
kernel Implement machine-dependant functions for non-x86 platforms.   2 November 2002 &status.new;
  Port NetBSD's liblwp to FreeBSD/KSE.   2 November 2002 &status.new;
kernel Signal the UTS with information about which thread it's for.   3 November 2002 &status.new;
&footer;