Merge the following from the English version:

1.35 -> 1.99	www/ja/smp/index.sgml
This commit is contained in:
Ryusuke SUZUKI 2011-11-06 16:11:00 +00:00
parent 8de2913fb0
commit c23230e47b
Notes: svn2git 2020-12-08 03:00:23 +00:00
svn path=/www/; revision=37893

View file

@ -1,6 +1,6 @@
<!DOCTYPE HTML PUBLIC "-//FreeBSD//DTD HTML 4.01 Transitional-Based Extension//EN" [ <!DOCTYPE HTML PUBLIC "-//FreeBSD//DTD HTML 4.01 Transitional-Based Extension//EN" [
<!ENTITY base CDATA ".."> <!ENTITY base CDATA "..">
<!ENTITY date "$FreeBSD: www/ja/smp/index.sgml,v 1.10 2011/08/10 13:03:42 ryusuke Exp $"> <!ENTITY date "$FreeBSD: www/ja/smp/index.sgml,v 1.11 2011/10/31 15:53:20 ryusuke Exp $">
<!ENTITY title "FreeBSD SMP プロジェクト"> <!ENTITY title "FreeBSD SMP プロジェクト">
<!ENTITY email 'freebsd-smp'> <!ENTITY email 'freebsd-smp'>
<!ENTITY % navinclude.developers "INCLUDE"> <!ENTITY % navinclude.developers "INCLUDE">
@ -20,7 +20,7 @@
]> ]>
<!-- The FreeBSD Japanese Documentation Project --> <!-- The FreeBSD Japanese Documentation Project -->
<!-- Original revision: 1.35 --> <!-- Original revision: 1.99 -->
<html> <html>
&header; &header;
@ -84,6 +84,15 @@
まだ、求められていないようであれば、何かしらの進展がないかどうか、 まだ、求められていないようであれば、何かしらの進展がないかどうか、
FreeBSD SMP メーリングリストへメールを送信する価値があります。</p> FreeBSD SMP メーリングリストへメールを送信する価値があります。</p>
<p>日付フィールドの持つ意味は、タスクのステータスに依存します。
完了したタスクについては、そのタスクが完了した日、
または完了が報告された日です。
現在進行中のタスクに関しては、エントリを最後にアップデートした日付を表します。
停止したタスクについては、タスクが停止したことを宣言した日、
新しいタスクについては、タスクが一覧に追加された日を意味します。</p>
<p>タスクはステータス、日付の順に並んでいます。</p>
<a name="resources"></a> <a name="resources"></a>
<h2>情報源とリンク</h2> <h2>情報源とリンク</h2>
@ -95,9 +104,9 @@
<li><p>SMP に関連した議論は <li><p>SMP に関連した議論は
<a href="mailto:freebsd-smp@FreeBSD.org">freebsd-smp</a> <a href="mailto:freebsd-smp@FreeBSD.org">freebsd-smp</a>
メーリングリストにおいて行われています。 メーリングリストにおいて行われています。
<a href="../handbook/index.html">FreeBSD ¥Ï¥ó¥É¥Ö¥Ã¥¯</a> <a href="../../doc/ja_JP.eucJP/books/handbook/index.html">FreeBSD ハンドブック</a>
<a href="../handbook/eresources.html#ERESOURCES-MAIL"> <a href="../../doc/ja_JP.eucJP/books/handbook/eresources.html#ERESOURCES-MAIL">
インターネット上のリソース</a> インターネット上のリソース</a>
にメーリングリストに関する詳しい情報が載っています。</p></li> にメーリングリストに関する詳しい情報が載っています。</p></li>
@ -118,7 +127,7 @@
<p>この一般タスクリストは完全ではありません。</p> <p>この一般タスクリストは完全ではありません。</p>
<table class="tblbasic"> <table border=3>
<tr> <tr>
<th> タスク </th> <th> タスク </th>
<th> 担当者 </th> <th> 担当者 </th>
@ -258,14 +267,14 @@
<tr> <tr>
<td> Process accounting. </td> <td> Process accounting. </td>
<td> Tor Egge, &a.jhb; </td> <td> &a.tegge;, &a.jhb; </td>
<td> 5 October 2000 </td> <td> 5 October 2000 </td>
<td> &status.done; </td> <td> &status.done; </td>
</tr> </tr>
<tr> <tr>
<td> Make ethernet drivers thread-safe. </td> <td> Make ethernet drivers thread-safe. </td>
<td> Bill Paul </td> <td> &a.wpaul; </td>
<td> 15 October 2000 </td> <td> 15 October 2000 </td>
<td> &status.done; </td> <td> &status.done; </td>
</tr> </tr>
@ -336,7 +345,7 @@
<tr> <tr>
<td> Make the zone allocator thread-safe. </td> <td> Make the zone allocator thread-safe. </td>
<td> Dag-Erling Smorgrav </td> <td> &a.des; </td>
<td> 21 January 2001 </td> <td> 21 January 2001 </td>
<td> &status.done; </td> <td> &status.done; </td>
</tr> </tr>
@ -562,7 +571,7 @@
<tr> <tr>
<td> Lock taskqueues. </td> <td> Lock taskqueues. </td>
<td> Andrew Reiter, &a.jhb; </td> <td> &a.arr;, &a.jhb; </td>
<td> 25 October 2001 </td> <td> 25 October 2001 </td>
<td> &status.done; </td> <td> &status.done; </td>
</tr> </tr>
@ -602,7 +611,7 @@
<td> Use the per-thread critical section nesting level in the mutex <td> Use the per-thread critical section nesting level in the mutex
and interrupt thread code to automatically determine when to not and interrupt thread code to automatically determine when to not
preempt. This makes the MTX_NOSWITCH, SWI_SWITCH, and preempt. This makes the MTX_NOSWITCH, SWI_SWITCH, and
SWI_NOSWITCH flags obslete as the kernel will be able to figure SWI_NOSWITCH flags obsolete as the kernel will be able to figure
out the proper behavior on its own. </td> out the proper behavior on its own. </td>
<td> &a.jhb; </td> <td> &a.jhb; </td>
<td> 5 January 2002 </td> <td> 5 January 2002 </td>
@ -630,6 +639,271 @@
<td> &status.done; </td> <td> &status.done; </td>
</tr> </tr>
<tr>
<td> Move to explicit reference counting for soft vnode references.
</td>
<td> &a.phk; </td>
<td> 8 March 2002 </td>
<td> &status.done; </td>
</tr>
<tr>
<td> Initialize mutex pools early enough that sx locks can be used
for VM. </td>
<td> &a.green; </td>
<td> 14 March 2002 </td>
<td> &status.done; </td>
</tr>
<tr>
<td> Place a global lock (sellock) around selinfo structures to fix a
variety of lock order reversals, and make select() MP-safe. </td>
<td> &a.alfred;, &a.davidc; </td>
<td> 14 March 2002 </td>
<td> &status.done; </td>
</tr>
<tr>
<td> Push down Giant on read, write, pread, pwrite system calls,
acquiring Giant in the per-subsystem fileop layer for sockets, VFS,
etc.</td>
<td> &a.alfred; </td>
<td> 15 March 2002 </td>
<td> &status.done; </td>
</tr>
<tr>
<td> Lock down kernel module structures. </td>
<td> &a.arr; </td>
<td> 18 March 2002 </td>
<td> &status.done; </td>
</tr>
<tr>
<td> Lock down kernel linker globals.</td>
<td> &a.arr; </td>
<td> 18 March 2002 </td>
<td> &status.done; </td>
</tr>
<tr>
<td> Rewrite kernel memory allocator to be a slab allocator that
uses per-cpu caches. </td>
<td> &a.jeff; </td>
<td> 21 March 2002 </td>
<td> &status.done; </td>
</tr>
<tr>
<td> Replace incorrect use of MD critical section API to disable
interrupts with a specific interrupt disable API. </td>
<td> &a.imp;, &a.dfr;, &a.benno;, &a.jhb; </td>
<td> 21 March 2002 </td>
<td> &status.done; </td>
</tr>
<tr>
<td> Lock down access to the shared p_args "process arguments"
structure through appropriate protection of that structure and
references to it. </td>
<td> &a.mini; </td>
<td> 31 March 2002 </td>
<td> &status.done; </td>
</tr>
<tr>
<td> Move from flags/tsleep lock to sx locks to protect sysctl
tree from updates during sysctl operations. </td>
<td> &a.mini; </td>
<td> 1 April 2002 </td>
<td> &status.done; </td>
</tr>
<tr>
<td> Create/port userland tool to manage KTR event dumps. </td>
<td> &a.jake; </td>
<td> 1 April 2002 </td>
<td> &status.done; </td>
</tr>
<tr>
<td> Create MTX_SYSINIT and SX_SYSINIT macros that allow for
initializing locks that are subsystem independent. </td>
<td> &a.arr; </td>
<td> 2 April 2002 </td>
<td> &status.done; </td>
</tr>
<tr>
<td> Lock down the global securelevel variable. </td>
<td> &a.arr; </td>
<td> 2 April 2002 </td>
<td> &status.done; </td>
</tr>
<tr>
<td> Make grow_stack() MI. Possibly even a macro or inline. </td>
<td> &a.alc; </td>
<td> 6 April 2002 </td>
<td> &status.done; </td>
</tr>
<tr>
<td> Lock use of p_fd, which otherwise can result in corrupted
p_fd panics during heavy operation. Start with a global,
and move to per-proc locking. </td>
<td> &a.alfred;, &a.tanimura; </td>
<td> 8 April 2002 </td>
<td> &status.done; </td>
</tr>
<tr>
<td> Lock struct pargs. </td>
<td> &a.mini; </td>
<td> 9 April 2002 </td>
<td> &status.done; </td>
</tr>
<tr>
<td> Make {o,}sigreturn() MPSAFE. </td>
<td> &a.alc; </td>
<td> 11 April 2002 </td>
<td> &status.done; </td>
</tr>
<tr>
<td> Rewrite kernel memory allocator so that Giant is not required
for malloc() or free(). </td>
<td> &a.jeff; </td>
<td> 2 May 2002 </td>
<td> &status.done; </td>
</tr>
<tr>
<td> Replace complex shared/exclusive locking scheme in the VM
system with a purely exclusive lockmgr locking scheme, simplifying
locking and removing potential livelock/deadlock scenarios. </td>
<td> &a.green;, &a.alc; </td>
<td> 3 May 2002 </td>
<td> &status.done; </td>
</tr>
<tr>
<td> Push down Giant into readv/writev system calls in style of
read/write/pread/pwrite once malloc no longer requires Giant in
the handling of iovec structures for uio. </td>
<td> &a.alc; </td>
<td> 9 May 2002 </td>
<td> &status.done; </td>
</tr>
<tr>
<td> Push down Giant in mprotect(), minherit(), and madvise() so
that it is no longer acquired and released directly. </td>
<td> &a.alc; </td>
<td> 18 May 2002 </td>
<td> &status.done; </td>
</tr>
<tr>
<td> Update suser() and p_can*() APIs to accept threads instead of
processes. </td>
<td> &a.jhb; </td>
<td> 18 May 2002 </td>
<td> &status.done; </td>
</tr>
<tr>
<td> Broadly transition to td_ucred from p_ucred once KSE dependencies
are in place. </td>
<td> &a.jhb; </td>
<td> 18 May 2002 </td>
<td> &status.done; </td>
</tr>
<tr>
<td> Add a witness_sleep() check to uma_zalloc() to catch code
calling malloc() or uma_zalloc() while holding non-sleepable
locks. </td>
<td> &a.jhb; </td>
<td> 20 May 2002 </td>
<td> &status.done; </td>
</tr>
<tr>
<td> Optimize UP support by changing spin locks to only perform
critical section enter and exits. </td>
<td> &a.jhb; </td>
<td> 21 May 2002 </td>
<td> &status.done; </td>
</tr>
<tr>
<td> Make sleep mutexes spin if the current lock holder is
executing on another CPU. </td>
<td> &a.jhb; </td>
<td> 21 May 2002 </td>
<td> &status.done; </td>
</tr>
<tr>
<td> Add support for the IA32 pause instruction to spin loops in
locks. </td>
<td> &a.jhb; </td>
<td> 21 May 2002 </td>
<td> &status.done; </td>
</tr>
<tr>
<td> Make KTRACE write into tracefiles asynchronously. </td>
<td> &a.jhb; </td>
<td> 7 June 2002 </td>
<td> &status.done; </td>
</tr>
<tr>
<td> Remove Giant from jail(2). </td>
<td> &a.arr; </td>
<td> 25 June 2002 </td>
<td> &status.done; </td>
</tr>
<tr>
<td> Remove Giant from modnext(2), modfnext(2),
modstat(2),and modfind(2).</td>
<td> &a.arr; </td>
<td> 25 June 2002 </td>
<td> &status.done; </td>
</tr>
<tr>
<td> Fix synchronization of TLB flushes and invlpg() on x86 SMP. </td>
<td> &a.peter; </td>
<td> 12 July 2002 </td>
<td> &status.done; </td>
</tr>
<tr>
<td> Make cpu_coredump MI. </td>
<td> &a.peter; </td>
<td> 7 September 2002 </td>
<td> &status.done; </td>
</tr>
<tr>
<td> Add a subsystem lock to the accounting code. </td>
<td> &a.arr; </td>
<td> 11 September 2002 </td>
<td> &status.done; </td>
</tr>
<tr>
<td> Lock down TrustedBSD MAC implementation. </td>
<td> &a.rwatson; </td>
<td> 11 November 2002 </td>
<td> &status.done; </td>
</tr>
<!-- WIP --> <!-- WIP -->
<tr> <tr>
@ -639,13 +913,6 @@
<td> &status.wip; </td> <td> &status.wip; </td>
</tr> </tr>
<tr>
<td> Make KTRACE write into tracefiles asynchronously. </td>
<td> &a.jhb; </td>
<td> 6 September 2001 </td>
<td> &status.wip; </td>
</tr>
<tr> <tr>
<td> Make the kernel fully preemptive. </td> <td> Make the kernel fully preemptive. </td>
<td> &a.jhb; </td> <td> &a.jhb; </td>
@ -653,17 +920,10 @@
<td> &status.wip; </td> <td> &status.wip; </td>
</tr> </tr>
<tr>
<td> Convert vm_map locks to sx locks. </td>
<td> &a.green; </td>
<td> 18 October 2001 </td>
<td> &status.wip; </td>
</tr>
<tr> <tr>
<td> Lock down the tty subsystem. </td> <td> Lock down the tty subsystem. </td>
<td> Dick Garner, Jeremy Scofield </td> <td> Dick Garner, Jeremy Scofield, &a.tmm; </td>
<td> 16 November 2001 </td> <td> 2 April 2002 </td>
<td> &status.wip; </td> <td> &status.wip; </td>
</tr> </tr>
@ -674,45 +934,6 @@
<td> &status.wip; </td> <td> &status.wip; </td>
</tr> </tr>
<tr>
<td> Make sleep mutexes spin if the current lock holder is
executing on another CPU. </td>
<td> &a.jhb; </td>
<td> 16 November 2001 </td>
<td> &status.wip; </td>
</tr>
<tr>
<td> Add support for the IA32 pause instruction to spin loops in
locks. </td>
<td> &a.jhb; </td>
<td> 16 November 2001 </td>
<td> &status.wip; </td>
</tr>
<tr>
<td> Optimize UP support by changing spin locks to only perform
critical section enter and exits. </td>
<td> &a.jhb; </td>
<td> 20 December 2001 </td>
<td> &status.wip; </td>
</tr>
<tr>
<td> Implement lazy interrupt thread switching (context
stealing) on i386. </td>
<td> &a.bmilekic; </td>
<td> 4 January 2002 </td>
<td> &status.wip; </td>
</tr>
<tr>
<td> Fix synchronization of TLB flushes and invlpg() on x86 SMP. </td>
<td> &a.peter; </td>
<td> 4 January 2002 </td>
<td> &status.wip; </td>
</tr>
<tr> <tr>
<td> Lock pipe implementation: sigio/fown-related evil </td> <td> Lock pipe implementation: sigio/fown-related evil </td>
<td> &a.alfred; </td> <td> &a.alfred; </td>
@ -720,29 +941,6 @@
<td> &status.wip; </td> <td> &status.wip; </td>
</tr> </tr>
<tr>
<td> Broadly transition to td_ucred from p_ucred once KSE dependencies
are in place. </td>
<td> &a.jhb; </td>
<td> 27 February 2002 </td>
<td> &status.wip; </td>
</tr>
<tr>
<td> Update suser() and p_can*() APIs to accept threads instead of
processes. </td>
<td> &a.jhb; </td>
<td> 27 February 2002 </td>
<td> &status.wip; </td>
</tr>
<tr>
<td> Lock down kernel linker and module structures </td>
<td> &a.arr; </td>
<td> 27 February 2002 </td>
<td> &status.wip; </td>
</tr>
<tr> <tr>
<td> Make use of process locking and process reference counting <td> Make use of process locking and process reference counting
to protect debugging interfaces (and procfs). </td> to protect debugging interfaces (and procfs). </td>
@ -759,13 +957,6 @@
<td> &status.wip; </td> <td> &status.wip; </td>
</tr> </tr>
<tr>
<td> Lock down TrustedBSD MAC implementation. </td>
<td> &a.rwatson; </td>
<td> 27 February 2002 </td>
<td> &status.wip; </td>
</tr>
<tr> <tr>
<td> Lock down newbus infrastructure to support driver <td> Lock down newbus infrastructure to support driver
fine-graining. </td> fine-graining. </td>
@ -785,11 +976,122 @@
<tr> <tr>
<td> SMPng architecture document. </td> <td> SMPng architecture document. </td>
<td> &a.jhb; </td> <td> &a.jhb;, &a.rwatson; </td>
<td> 28 February 2002 </td> <td> 28 February 2002 </td>
<td> &status.wip; </td> <td> &status.wip; </td>
</tr> </tr>
<tr>
<td> Move to shared lock for VOP_GETATTR() to reduce blocking during
frequent lightweight VFS operations. Modify namei() to provide
a LOOKUP_SHARED flag to indicate when the lock required may be
shared instead of exclusive. </td>
<td> &a.jeff; </td>
<td> 11 March 2002 </td>
<td> &status.wip; </td>
</tr>
<tr>
<td> Create mutex profiling tool for the kernel so as to measure
contention and behavior of kernel mutexes. </td>
<td> &a.eivind;, &a.des; </td>
<td> 31 March 2002 </td>
<td> &status.wip; </td>
</tr>
<tr>
<td> Lock eventhandlers. </td>
<td> &a.msmith;, &a.mini; </td>
<td> 8 April 2002 </td>
<td> &status.wip; </td>
</tr>
<tr>
<td> Lock sysctl hierarchy and access methods. </td>
<td> &a.mini; </td>
<td> 9 April 2002 </td>
<td> &status.wip; </td>
</tr>
<tr>
<td> Document existing vm_map locking and verify it's correctness. </td>
<td> &a.alc; </td>
<td> 18 May 2002 </td>
<td> &status.wip; </td>
</tr>
<tr>
<td> Document existing vm_object locking and verify it's
correctness. </td>
<td> &a.alc; </td>
<td> 4 May 2002 </td>
<td> &status.wip; </td>
</tr>
<tr>
<td> Implement generic turnstiles to use when blocking on non-sleepable
locks. </td>
<td> &a.jhb; </td>
<td> 23 May 2002 </td>
<td> &status.wip; </td>
</tr>
<tr>
<td> Lock down linker_file_t structures in the kernel linker.</td>
<td> &a.arr; </td>
<td> 19 June 2002 </td>
<td> &status.wip; </td>
</tr>
<tr>
<td> Lock down the SysV IPC code. </td>
<td> &a.alfred; </td>
<td> 13 August 2002 </td>
<td> &status.wip; </td>
</tr>
<tr>
<td> Review locking strategy and correctness of VFS operations
and fix up various failure modes associated with enabling
VFS locking assertions. </td>
<td> &a.jeff; </td>
<td> 10 December 2002 </td>
<td> &status.wip; </td>
</tr>
<tr>
<td> Document in-vnode locking strategy, clean it up, remove
interlock, switch to sx locks. </td>
<td> &a.jeff; </td>
<td> 10 December 2002 </td>
<td> &status.wip; </td>
</tr>
<tr>
<td> Implement lazy interrupt thread switching (context
stealing) on i386. </td>
<td> &a.bmilekic;, &a.kan; </td>
<td> 10 December 2002 </td>
<td> &status.wip; </td>
</tr>
<tr>
<td> Implement lazy interrupt thread switching (context
stealing) on sparc64. </td>
<td> &a.jake; </td>
<td> 10 December 2002 </td>
<td> &status.wip; </td>
</tr>
<tr>
<td> Switch from using lockmgr in VM to using a mutex or exclusive
sxlock. Push down Giant on all VM except for vm_object/VFS and
vm_page/pmap components. </td>
<td> &a.alc; </td>
<td> 10 December 2002 </td>
<td> &status.wip; </td>
</tr>
<!-- Stalled --> <!-- Stalled -->
<tr> <tr>
@ -808,14 +1110,6 @@
<td> &status.stalled; </td> <td> &status.stalled; </td>
</tr> </tr>
<tr>
<td> Implement trap handler for cmpxchgl on 80386 to support
generic userland atomic operations. </td>
<td> &a.jake; </td>
<td> 15 May 2001 </td>
<td> &status.stalled; </td>
</tr>
<!-- Not Started --> <!-- Not Started -->
<tr> <tr>
@ -825,13 +1119,6 @@
<td> &status.new; </td> <td> &status.new; </td>
</tr> </tr>
<tr>
<td> Use per-CPU buffers for ktr to reduce synchronization. </td>
<td> &nbsp; </td>
<td> 5 September 2000 </td>
<td> &status.new; </td>
</tr>
<tr> <tr>
<td> Remove priority argument from tsleep(), msleep(), <td> Remove priority argument from tsleep(), msleep(),
cv_*wait*(). </td> cv_*wait*(). </td>
@ -863,20 +1150,6 @@
<td> &status.new; </td> <td> &status.new; </td>
</tr> </tr>
<tr>
<td> Make cpu_core MI. </td>
<td> &nbsp; </td>
<td> 13 June 2001 </td>
<td> &status.new; </td>
</tr>
<tr>
<td> Lock struct pargs. </td>
<td> &nbsp; </td>
<td> 20 June 2001 </td>
<td> &status.new; </td>
</tr>
<tr> <tr>
<td> Specify priorities for condition variables, semaphores, and <td> Specify priorities for condition variables, semaphores, and
sx locks. </td> sx locks. </td>
@ -907,13 +1180,6 @@
<td> &status.new; </td> <td> &status.new; </td>
</tr> </tr>
<tr>
<td> Make grow_stack() MI. Possibly even a macro or inline. </td>
<td> &nbsp; </td>
<td> 7 September 2001 </td>
<td> &status.new; </td>
</tr>
<tr> <tr>
<td> Fix *hold (e.g. crhold) to return reference to object. </td> <td> Fix *hold (e.g. crhold) to return reference to object. </td>
<td> &nbsp; </td> <td> &nbsp; </td>
@ -928,13 +1194,6 @@
<td> &status.new; </td> <td> &status.new; </td>
</tr> </tr>
<tr>
<td> Convert eventhandlers to sx locks. </td>
<td> &nbsp; </td>
<td> 7 September 2001 </td>
<td> &status.new; </td>
</tr>
<tr> <tr>
<td> Add witness checking for lockmgr locks. </td> <td> Add witness checking for lockmgr locks. </td>
<td> &nbsp; </td> <td> &nbsp; </td>
@ -943,19 +1202,12 @@
</tr> </tr>
<tr> <tr>
<td> Add ICU spin locks on ia64 and sparc64. </td> <td> Add ICU spin locks on ia64. </td>
<td> &nbsp; </td> <td> &nbsp; </td>
<td> 4 January 2002 </td> <td> 4 January 2002 </td>
<td> &status.new; </td> <td> &status.new; </td>
</tr> </tr>
<tr>
<td> Lock sysctl hierarchy and access methods. </td>
<td> &nbsp; </td>
<td> 25 February 2002 </td>
<td> &status.new; </td>
</tr>
<tr> <tr>
<td> Fast-path push-down of Giant for VOP_READ() and VOP_WRITE(). </td> <td> Fast-path push-down of Giant for VOP_READ() and VOP_WRITE(). </td>
<td> &nbsp; </td> <td> &nbsp; </td>
@ -1015,34 +1267,62 @@
</tr> </tr>
<tr> <tr>
<td> Move to explicit reference counting for soft vnode references. <td> Expand mutex profiling tool to also profile sx locks. </td>
</td> <td> &a.eivind;, &a.des; </td>
<td> &a.jeff; </td> <td> 1 April 2002 </td>
<td> 27 February 2002 </td>
<td> &status.new; </td> <td> &status.new; </td>
</tr> </tr>
<tr> <tr>
<td> Document in-vnode locking strategy, clean it up, remove <td> Implement atomic_fetchadd() for int's and long's with acq and rel
interlock, switch to sx locks. </td> versions. </td>
<td> &a.jeff; </td> <td> &nbsp; </td>
<td> 27 February 2002 </td> <td> 23 May 2002 </td>
<td> &status.new; </td>
</tr>
<tr>
<td> Implement a simple reference count API using atomic operations and
use this to replace locks that just protect a reference count. </td>
<td> &nbsp; </td>
<td> 23 May 2002 </td>
<td> &status.new; </td>
</tr>
<tr>
<td> Implement a sleep queue abstraction to be used by both msleep()
and condition variables. This new abstraction should use a hash
table of sleep queues with a spin lock on each sleep queue chain
similar to turnstile chain locks to make sched_lock finger
grained.</td>
<td> &a.jhb; </td>
<td> 23 May 2002 </td>
<td> &status.new; </td>
</tr>
<tr>
<td> Add a witness_sleep() check to copyin/out() and s/fuword(). </td>
<td> &a.jhb; </td>
<td> 7 June 2002 </td>
<td> &status.new; </td> <td> &status.new; </td>
</tr> </tr>
<tr> <tr>
<td> Move to shared lock for VOP_GETATTR() to reduce blocking during <td> Split witness_lock() into witness_checkorder() and
frequent lightweight VFS operations. Review strategy for other witness_lock(). witness_checkorder() would be called before
vnode operations. </td> acquiring a lock to increase the changes of detecting and warning
<td> &a.jeff; </td> about a reversal prior to deadlocking. witness_lock() would
<td> 27 February 2002 </td> simply update witness' internal state to note that a lock has
been acquired. </td>
<td> &a.jhb; </td>
<td> 7 June 2002 </td>
<td> &status.new; </td> <td> &status.new; </td>
</tr> </tr>
<!-- <!--
<tr> <tr>
<td> </td> <td> </td>
<td> </td> <td> &nbsp; </td>
<td> D M 2002 </td> <td> D M 2002 </td>
<td> &status.new; </td> <td> &status.new; </td>
</tr> </tr>
@ -1053,7 +1333,7 @@
<p>以下のテーブルは、ネットワークスタックのマルチスレッド化に関するサブタスクの <p>以下のテーブルは、ネットワークスタックのマルチスレッド化に関するサブタスクの
TODO リストです。</p> TODO リストです。</p>
<table class="tblbasic"> <table border=3>
<tr> <tr>
<th> タスク </th> <th> タスク </th>
<th> 担当者 </th> <th> 担当者 </th>
@ -1070,20 +1350,42 @@
<!-- WIP --> <!-- WIP -->
<!-- Not Started --> <tr>
<td> Lock down struct socket. </td>
<td> &a.tanimura; </td>
<td> 21 April 2002 </td>
<td> &status.wip; </td>
</tr>
<tr>
<td> Lock down struct inpcb. </td>
<td> &a.hsu; </td>
<td> 29 April 2002 </td>
<td> &status.wip; </td>
</tr>
<tr> <tr>
<td> Lock struct ifnet. </td> <td> Lock struct ifnet. </td>
<td> &nbsp; </td> <td> &a.hsu; </td>
<td> 19 January 2001 </td> <td> 29 January 2003 </td>
<td> &status.wip; </td>
</tr>
<!-- Not Started -->
<tr>
<td> Reduce contention upon locking a socket buffer by replacing
tsleep() and wakeup() with a condvar. </td>
<td> &a.tanimura; </td>
<td> 21 April 2002 </td>
<td> &status.new; </td> <td> &status.new; </td>
</tr> </tr>
</table> </table>
<a name="issues"></a> <a name="issues"></a>
<h2>既知の問題点</h2> <h2>既知の問題点</h2>
<table class="tblbasic"> <table border=3>
<tr> <tr>
<th> 問題点 </th> <th> 問題点 </th>
<th> 最終更新 </th> <th> 最終更新 </th>
@ -1144,27 +1446,41 @@
<td> &status.resolved; </td> <td> &status.resolved; </td>
</tr> </tr>
<!-- unresolved -->
<tr> <tr>
<td> Serial gdb does not work if boot_ddb and boot_gdb options <td> Serial gdb does not work if boot_ddb and boot_gdb options
are specified. </td> are specified. </td>
<td> 5 September 2000 </td> <td> 14 July 2002 </td>
<td> &status.unresolved; </td> <td> &status.resolved; </td>
</tr> </tr>
<tr> <tr>
<td> Serial gdb does not work at 115200 baud. </td> <td> Serial gdb does not work at 115200 baud. </td>
<td> 5 September 2000 </td> <td> 14 July 2002 </td>
<td> &status.unresolved; </td> <td> &status.resolved; </td>
</tr> </tr>
<tr>
<td> Serial gdb never regains control once 'cont' has been
entered. </td>
<td> 14 July 2002 </td>
<td> &status.resolved; </td>
</tr>
<!-- unresolved -->
<tr> <tr>
<td> Profiling is broken. </td> <td> Profiling is broken. </td>
<td> 20 February 2001 </td> <td> 20 February 2001 </td>
<td> &status.unresolved; </td> <td> &status.unresolved; </td>
</tr> </tr>
<tr>
<td> jail_sysvipc_allowed is checked in an unsafe manner in
the SYSV IPC syscalls. </td>
<td> 5 March 2002 </td>
<td> &status.unresolved; </td>
</tr>
<!-- <!--
<tr> <tr>
<td> </td> <td> </td>
@ -1270,7 +1586,7 @@
<li> <li>
<p>An updated <a <p>An updated <a
href="http://people.freebsd.org/~jasone/smp/smpng_patch_9.7">patch</a> href="http://people.freebsd.org/~jasone/smp/smpng_patch_9.7">patch</a>
is available for download. This patch is proably what will is available for download. This patch is probably what will
actually get committed.</p> actually get committed.</p>
</li> </li>
</ul> </ul>
@ -1357,8 +1673,8 @@
<li> <li>
<p>&a.cp; has provided the PostScript versions of his <p>&a.cp; has provided the PostScript versions of his
presentation slides for the presentation slides for the
<a href="smp_meeting_slides_1.ps">first day</a> and <a href="http://people.FreeBSD.org/~jasone/smp/smp_meeting_slides_1.ps">first day</a> and
<a href="smp_meeting_slides_2.ps">second day</a> of the <a href="http://people.FreeBSD.org/~jasone/smp/smp_meeting_slides_2.ps">second day</a> of the
SMP meeting.</p> SMP meeting.</p>
</li> </li>
</ul> </ul>
@ -1367,7 +1683,7 @@
<ul> <ul>
<li> <li>
<p>Here's a copy of the <p>Here's a copy of the
<a href="smp_meeting_summary.txt">SMP meeting summary</a> <a href="http://docs.freebsd.org/cgi/getmsg.cgi?fetch=226208+0+archive/2000/freebsd-smp/20000625.freebsd-smp">SMP meeting summary</a>
that was posted to the -smp mailing list.</p> that was posted to the -smp mailing list.</p>
</li> </li>
</ul> </ul>
@ -1376,7 +1692,7 @@
<ul> <ul>
<li> <li>
<p>Here's a copy of the <p>Here's a copy of the
<a href="smp_project_announcement.txt">SMP project announcement</a> <a href="http://docs.freebsd.org/cgi/getmsg.cgi?fetch=154884+0+archive/2000/freebsd-current/20000625.freebsd-current">SMP project announcement</a>
that was posted to the -current mailing list.</p> that was posted to the -current mailing list.</p>
</li> </li>
</ul> </ul>