diff --git a/en/kse/index.sgml b/en/kse/index.sgml index d21f12196b..3c97035eab 100644 --- a/en/kse/index.sgml +++ b/en/kse/index.sgml @@ -1,233 +1,240 @@ - + %includes; Done"> In progress"> Stalled"> Not Started"> Resolved"> Unresolved"> %developers; ]> &header;
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, with a new libpthread library which will be linked with the -lpthread - gcc option. + gcc option.
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). + 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 all install from - /usr/src/lib/libpthread (if you have - sources installed on your system), or check out the - libpthread and - libc modules from CVS. You don't need to - rebuild libc, but the libpthread makefiles refer to parts of the - libc sources.
- -Linking an application against libpthread is straightforward. 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. + libpthread; this is straightforward. In the application's makefile(s), + change the -pthread compiler switch or -lc_r link + option to -lpthread and relink. Alternatively, you can use + /etc/libmap.conf to map libc_r to libpthread (see + libmap.conf(5)).
Following is an incomplete general list of tasks:
| Module | Task | Responsible | Last updated | Status | |||||
|---|---|---|---|---|---|---|---|---|---|
| libpthread | Write kse(2) man page documenting new system calls. | &a.archie; | 10 September 2002 | &status.done; | |||||
| 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.done; | |||||
| libpthread | Deliver signals to threads. | &a.deischen; &a.davidxu; | 28 June 2003 | &status.done; | |||||
| libpthread | Locking for SMP. | &a.deischen; | 3 May 2003 | &status.done; | |||||
| kernel | Locking for SMP. | &a.davidxu; | 3 May 2003 | &status.done; | |||||
| libpthread | Launch multiple KSEs (one per CPU). | &a.davidxu; | 3 May 2003 | &status.done; | |||||
| libpthread | -Implement machine-dependent functions for non-x86 platforms. | +libpthread, kernel | +Implement alpha machine-dependent functions. | &a.marcel; | -28 June 2003 | +30 Aug 2003 | &status.wip; | ||
| kernel | -Implement machine-dependent functions for non-x86 platforms. | +libpthread, kernel | +Implement amd64 machine-dependent functions. | +&a.davidxu; &a.deischen; | +30 Aug 2003 | +&status.done; | +|||
| libpthread, kernel | +Implement i386 machine-dependent functions. | +&a.davidxu; &a.deischen; | +30 Aug 2003 | +&status.done; | +|||||
| libpthread, kernel | +Implement ia64 machine-dependent functions. | &a.marcel; | -28 June 2003 | -&status.wip; | +30 Aug 2003 | +&status.done; | |||
| - | Port NetBSD's liblwp to FreeBSD/KSE. | -- | 2 November 2002 | -&status.new; | +libpthread, kernel | +Implement sparc64 machine-dependent functions. | +&a.jake; | +30 Aug 2003 | +&status.wip; |
| kernel | Implement KSE-specific signaling. | &a.davidxu; | 28 June 2003 | &status.done; | |||||
| libpthread | Implement scope system threads. | &a.deischen; | 3 May 2003 | &status.done; | |||||
| kernel | Efficient scope system threads (no upcalls when they block). | &a.davidxu; | -3 May 2003 | -&status.wip; | +30 Aug 2003 | +&status.done; |