Catch up with 5.4-Release.

Submitted by: Nobuyuki Koganemaru <n-kogane at syd odn ne jp>
Reviewed by: kano at na rim or jp
             Yoshihiko Sarumaru <mistral at imasy or jp>
This commit is contained in:
SUZUKI Koichi 2005-07-11 13:46:23 +00:00
parent 89213d0b83
commit b3aee9efe3
Notes: svn2git 2020-12-08 03:00:23 +00:00
svn path=/head/; revision=25074
33 changed files with 657 additions and 247 deletions

View file

@ -24,15 +24,15 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
.\" DAMAGE.
.\"
.\" %FreeBSD: src/share/man/man9/BUF_LOCKINIT.9,v 1.6 2001/12/26 23:14:04 davidc Exp %
.\" %FreeBSD: src/share/man/man9/BUF_LOCKINIT.9,v 1.6.8.1 2005/01/10 23:00:58 keramida Exp %
.\"
.\" $FreeBSD$
.Dd July 9, 2001
.Dd January 6, 2005
.Dt BUF_LOCKINIT 9
.Os
.Sh 名称
.Nm BUF_LOCKINIT
.Nd ロックされたバッファのロック解除
.Nd バッファロックの初期化
.Sh 書式
.In sys/param.h
.In sys/systm.h
@ -60,4 +60,4 @@
.Sh 作者
このマニュアルページは
.An Chad David Aq davidc@acns.ab.ca
が書きました。
によって書かれました。

View file

@ -23,10 +23,10 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.\" %FreeBSD: src/share/man/man9/BUS_CONFIG_INTR.9,v 1.4 2004/07/07 07:56:58 ru Exp %
.\" %FreeBSD: src/share/man/man9/BUS_CONFIG_INTR.9,v 1.4.2.1 2005/01/10 23:01:44 keramida Exp %
.\"
.\" $FreeBSD$
.Dd September 23, 2003
.Dd January 6, 2005
.Dt BUS_CONFIG_INTR 9
.Os
.\"
@ -101,4 +101,4 @@
このマニュアルページは
.An Marcel Moolenaar
.Aq marcel@xcllnt.net
が書きました。
によって書かれました。

View file

@ -26,10 +26,10 @@
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\"
.\" %FreeBSD: src/share/man/man9/BUS_PRINT_CHILD.9,v 1.14 2003/10/23 06:22:40 hmp Exp %
.\" %FreeBSD: src/share/man/man9/BUS_PRINT_CHILD.9,v 1.14.4.1 2005/01/10 23:06:34 keramida Exp %
.\"
.\" $FreeBSD$
.Dd June 16, 1998
.Dd January 6, 2005
.Dt BUS_PRINT_CHILD 9
.Os
.Sh 名称
@ -41,10 +41,12 @@
.Ft int
.Fn BUS_PRINT_CHILD "device_t dev" "device_t child"
.Sh 解説
これはデバイスの説明をプリントアウトするシステムのコードから呼び出されます。
.Fn BUS_PRINT_CHILD
メソッドはデバイスの説明をプリントアウトするシステムのコードから呼び出されます。
それは子デバイスが持っている親とのアタッチメントを記述するべきです。
例えば、TurboLaser のバスはどのノードにアタッチされたかをプリントします。
BUS_PRINT_CHILD によって出力されるメッセージの適切なフォーマット
.Fn BUS_PRINT_CHILD
によって出力されるメッセージの適切なフォーマット
に関しての更なる情報は
.Xr bus_generic_print_child 9
を見てください。
@ -56,4 +58,4 @@ BUS_PRINT_CHILD
.Sh 作者
このマニュアルページは
.An Doug Rabson
が書きました。
によって書かれました。

View file

@ -22,10 +22,10 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.\" %FreeBSD: src/share/man/man9/BUS_SETUP_INTR.9,v 1.17 2004/02/10 20:34:44 jmg Exp %
.\" %FreeBSD: src/share/man/man9/BUS_SETUP_INTR.9,v 1.17.2.1 2005/01/10 23:06:34 keramida Exp %
.\"
.\" $FreeBSD$
.Dd March 28, 2003
.Dd January 6, 2005
.Dt BUS_SETUP_INTR 9
.Os
.Sh 名称
@ -46,9 +46,8 @@
.Ft int
.Fn bus_teardown_intr "device_t dev" "struct resource *r" "void *cookiep"
.Sh 解説
メソッド
.Nm
は、資源マネージャの
.Fn BUS_SETUP_INTR
メソッドは、資源マネージャの
.Xr BUS_ALLOC_RESOURCE 9
メソッドによって以前に割り当てられた割り込みに対し、
割り込みハンドラを生成してアタッチします。
@ -86,7 +85,7 @@
.Fa cookiep
引数は、
割り込みの確立が成功した場合に、
.Nm
.Fn BUS_SETUP_INTR
が書込む親のバスが使用するクッキーである
.Vt "void *"
型へのポインタです。
@ -118,7 +117,11 @@ nexus
このマニュアルページは、
.An Doug Rabson
.Aq dfr@FreeBSD.org
が書いた BUS_CREATE_INTR および BUS_CONNECT_INTR のマニュアルページを基に、
によって書かれた、
.Fn BUS_CREATE_INTR
および
.Fn BUS_CONNECT_INTR
のマニュアルページを基に、
.An Jeroen Ruigrok van der Werven
.Aq asmodai@FreeBSD.org
が書きました。
によって書かれました。

View file

@ -26,10 +26,10 @@
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\"
.\" %FreeBSD: src/share/man/man9/DECLARE_MODULE.9,v 1.7 2003/09/10 19:24:35 ru Exp %
.\" %FreeBSD: src/share/man/man9/DECLARE_MODULE.9,v 1.7.4.2 2005/01/13 13:45:52 keramida Exp %
.\" $FreeBSD$
.\"
.Dd March 3, 2001
.Dd January 6, 2005
.Dt DECLARE_MODULE 9
.Os
.Sh 名称
@ -53,54 +53,49 @@
および
.Xr SYSCALL_MODULE 9
のような他のマクロの中で使用されます。
しかしながら、例えば動的な sysctl を実装するために、
直接呼び出されることがもちろん可能です。
もちろん、例えば動的な sysctl を実装するために、
直接呼び出されること可能です。
.Pp
.Fn DECLARE_MODULE
への引数は以下のとおりです。
.Pp
.Fa name
はモジュールの名前で、そのモジュールを識別するために
引数は以下のとおりです。
.Bl -tag -width indent
.It Fa name
モジュールを識別するために
.Fn SYSINIT
の呼び出しで使用されます。
.Pp
.Fa data
は 2 つの主要な要素を含む
.Vt moduledata_t
構造体です。その要素は、
呼び出しで使用されるモジュールの名前です。
.It Fa data
.Vt module_t
構造体の中で使用されるモジュール名の正式名称および型
.Vt modeventhand_t
のイベントハンドラ関数へのポインタです。
.Pp
.Fa sub
のイベントハンドラ関数へのポインタの 2 つの主要な要素を含む
.Vt moduledata_t
構造体です。
.It Fa sub
.Fn SYSINIT
マクロへの直接の引数です。
このための有効な値は
.Vt sysinit_sub_id
列挙に
列挙
.In ( sys/kernel.h
を参照) 含まれていて、システムスタートアップインタフェースの型を明示します。
例えば
.Xr DRIVER_MODULE 9
マクロは、ドライバモジュールはデバイスのためのドライバを含んでいるので、ここに
マクロは、これらのモジュールがデバイスのためのドライバを含んでいるので、
ここで
.Dv SI_SUB_DRIVERS
の値を使用します。
実行時にロードされるカーネルモジュールは、
実行時にロードされるカーネルモジュールは、
.Dv SI_SUB_EXEC
の値が共通です。
.Pp
.Fa order
の値は
の値は共通です。
.It Fa order
.Fn SYSINIT
のためのもう 1 つの引数です。
のための引数です。
これは KLD のサブシステム内の初期化の順序を意味します。
有効な値は
.Vt sysinit_elem_order
列挙
.Pq In kernel.h
に定義されています。
列挙型
.Pq In sys/kernel.h
で定義されています。
.El
.Sh 関連項目
.Xr DEV_MODULE 9 ,
.Xr DRIVER_MODULE 9 ,
@ -113,6 +108,7 @@
.An -nosplit
このマニュアルページは
.An Andrew Reiter Aq arr@watson.org
が書いた KLD Facility Programming Tutorial に触発されて、
によって書かれた
KLD Facility Programming Tutorial に触発されて、
.An Alexander Langer Aq alex@FreeBSD.org
が書きました。
によって書かれました。

View file

@ -26,10 +26,10 @@
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\"
.\" %FreeBSD: src/share/man/man9/DEVICE_ATTACH.9,v 1.8 2004/04/11 06:37:50 imp Exp %
.\" %FreeBSD: src/share/man/man9/DEVICE_ATTACH.9,v 1.8.2.1 2005/01/10 23:51:38 keramida Exp %
.\"
.\" $FreeBSD$
.Dd June 16, 1998
.Dd January 6, 2005
.Dt DEVICE_ATTACH 9
.Os
.Sh 名称
@ -41,11 +41,14 @@
.Ft int
.Fn DEVICE_ATTACH "device_t dev"
.Sh 解説
.Fn DEVICE_PROBE
メソッドが既に呼び出され、デバイスが存在していると示された後に
デバイスをシステムにアタッチします。
プローブメソッドは既に呼び出されているでしょうし、
デバイスが存在していると示されているでしょう。
このルーチンはハードウェアの初期化と
その他の (devfs エントリのような) システムリソース
.Fn DEVICE_ATTACH
メソッドはハードウェアの初期化と
その他の
.Pf ( Xr devfs 5
エントリのような) システムリソース
の割り当てを行なうべきです。
.Pp
バスを実装するデバイスは、そのバスにアタッチされたデバイスの存在のプローブ、
@ -56,6 +59,7 @@
.Sh 戻り値
成功時には 0 が返され、それ以外の場合は適切なエラーが返されます。
.Sh 関連項目
.Xr devfs 5 ,
.Xr device 9 ,
.Xr DEVICE_DETACH 9 ,
.Xr DEVICE_IDENTIFY 9 ,
@ -63,5 +67,5 @@
.Xr DEVICE_SHUTDOWN 9
.Sh 作者
このマニュアルページは
.An Doug Rabson
が書きました。
.An Doug Rabson Aq dfr@FreeBSD.org
によって書かれました。

View file

@ -26,7 +26,7 @@
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\"
.\" %FreeBSD: src/share/man/man9/DEVICE_DETACH.9,v 1.11 2004/07/03 18:29:23 ru Exp %
.\" %FreeBSD: src/share/man/man9/DEVICE_DETACH.9,v 1.11.2.1 2005/01/10 23:36:20 keramida Exp %
.\"
.\" $FreeBSD$
.Dd June 16, 1998
@ -43,7 +43,9 @@
.Sh 解説
デバイスをデタッチします。
ユーザがドライバソフトウェアを置き換えた場合、またはデバイスがシステムから
物理的に切り離されようとしている場合 (たとえば pccard デバイス) に、
物理的に切り離されようとしている場合 (たとえば
.Xr pccard 4
デバイス) に、
呼び出されることができます。
.Pp
このメソッドは
@ -54,6 +56,7 @@
.Sh 戻り値
成功時には 0 が返され、それ以外の場合は適切なエラーが返されます。
.Sh 関連項目
.Xr pccard 4 ,
.Xr device 9 ,
.Xr DEVICE_ATTACH 9 ,
.Xr DEVICE_IDENTIFY 9 ,
@ -62,4 +65,4 @@
.Sh 作者
このマニュアルページは
.An Doug Rabson
が書きました。
によって書かれました。

View file

@ -26,11 +26,10 @@
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\"
.\" %FreeBSD: src/share/man/man9/DEVICE_PROBE.9,v 1.19 2004/08/11 21:52:31 imp Exp %
.\" %FreeBSD: src/share/man/man9/DEVICE_PROBE.9,v 1.19.2.1 2005/01/10 23:51:38 keramida Exp %
.\"
.\" $FreeBSD$
.Dd June 16, 1998
.Os
.Dd January 6, 2005
.Dt DEVICE_PROBE 9
.Os
.Sh 名称
@ -42,7 +41,8 @@
.Ft int
.Fn DEVICE_PROBE "device_t dev"
.Sh 解説
このデバイスメソッドはデバイスがあるかどうかを知るためにプローブするべきです。
.Fn DEVICE_PROBE
メソッドはデバイスがあるかどうかを知るためにプローブするべきです。
デバイスが存在すれば 0 を、デバイスが見つからなければ
.Er ENXIO
を返すべきです。
@ -88,4 +88,4 @@
.Sh 作者
このマニュアルページは
.An Doug Rabson
が書きました。
によって書かれました。

View file

@ -26,10 +26,10 @@
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\"
.\" %FreeBSD: src/share/man/man9/DEVICE_SHUTDOWN.9,v 1.7 2001/10/01 16:09:23 ru Exp %
.\" %FreeBSD: src/share/man/man9/DEVICE_SHUTDOWN.9,v 1.7.8.1 2005/01/10 23:51:38 keramida Exp %
.\"
.\" $FreeBSD$
.Dd June 16, 1998
.Dd January 6, 2005
.Dt DEVICE_SHUTDOWN 9
.Os
.Sh 名称
@ -41,7 +41,8 @@
.Ft int
.Fn DEVICE_SHUTDOWN "device_t dev"
.Sh 解説
システムシャットダウンの間に呼び出され、
.Fn DEVICE_SHUTDOWN
メソッドは、システムシャットダウンの間に呼び出され、
ドライバがハードウェアをコンピュータがリブートしても構わない状態にすることを
可能にします。
.Sh 戻り値
@ -55,4 +56,4 @@
.Sh 作者
このマニュアルページは
.An Doug Rabson
が書きました。
によって書かれました。

View file

@ -26,10 +26,10 @@
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\"
.\" %FreeBSD: src/share/man/man9/MODULE_DEPEND.9,v 1.4 2001/12/26 23:14:04 davidc Exp %
.\" %FreeBSD: src/share/man/man9/MODULE_DEPEND.9,v 1.4.8.1 2005/01/10 23:39:18 keramida Exp %
.\"
.\" $FreeBSD$
.Dd March 11, 2001
.Dd January 7, 2005
.Dt MODULE_DEPEND 9
.Os
.Sh 名称
@ -46,9 +46,17 @@
でそのバージョンを既に登録している
.Fa moddepend
という名前の別のカーネルモジュールとの依存性を設定します。
どのモジュールが依存できるのか、3 つのバージョンが明示されなければなりません。
それはこのモジュールが依存することができる、望ましいバージョンはもちろん、
最小と最大のバージョンです。
.Pp
.Fa moddepend
に 3 つのバージョンを指定しなければなりません:
.Bl -tag -width ".Fa prefversion"
.It Fa minversion
現在のモジュールが依存できる最小のバージョン。
.It Fa maxversion
現在のモジュールが依存できる最大のバージョン。
.It Fa prefversion
現在のモジュールが依存できる望ましいバージョン。
.El
.Sh 使用例
.Bd -literal
MODULE_DEPEND(foo, bar, 1, 3, 4);
@ -61,4 +69,4 @@ MODULE_DEPEND(foo, bar, 1, 3, 4);
このマニュアルページは
.An -nosplit
.An Alexander Langer Aq alex@FreeBSD.org
が書きました。
によって書かれました。

View file

@ -194,6 +194,7 @@ MLINKS+=VOP_RDWR.9 VOP_READ.9
MLINKS+=VOP_RDWR.9 VOP_WRITE.9
MLINKS+=VOP_REMOVE.9 VOP_RMDIR.9
MLINKS+=bus_activate_resource.9 bus_deactivate_resource.9
MLINKS+=bus_alloc_resource.9 bus_alloc_resource_any.9
MLINKS+=copy.9 copyin.9 copy.9 copyinstr.9 copy.9 copyout.9 copy.9 copystr.9
MLINKS+=devstat.9 devicestat.9
MLINKS+=devstat.9 devstat_add_entry.9
@ -208,6 +209,7 @@ MLINKS+=make_dev.9 destroy_dev.9
MLINKS+=make_dev.9 make_dev_alias.9
MLINKS+=malloc.9 FREE.9 malloc.9 MALLOC.9 malloc.9 free.9
MLINKS+=malloc.9 realloc.9 malloc.9 reallocf.9
MLINKS+=malloc.9 MALLOC_DECLARE.9 malloc.9 MALLOC_DEFINE.9
MLINKS+=mi_switch.9 cpu_switch.9 mi_switch.9 cpu_throw.9
MLINKS+=namei.9 NDINIT.9
MLINKS+=namei.9 NDFREE.9
@ -222,10 +224,15 @@ MLINKS+=spl.9 splbio.9 spl.9 splclock.9 spl.9 splhigh.9 spl.9 splimp.9
MLINKS+=spl.9 splnet.9 spl.9 splsoftclock.9 spl.9 splsofttty.9
MLINKS+=spl.9 splstatclock.9 spl.9 spltty.9 spl.9 splvm.9 spl.9 splx.9
MLINKS+=store.9 subyte.9 store.9 suswintr.9 store.9 susword.9 store.9 suword.9
MLINKS+=time.9 boottime.9 time.9 mono_time.9 time.9 runtime.9
MLINKS+=time.9 boottime.9
MLINKS+=time.9 time_second.9
MLINKS+=time.9 time_uptime.9
MLINKS+=timeout.9 untimeout.9
MLINKS+=timeout.9 callout_handle_init.9 timeout.9 callout_init.9
MLINKS+=timeout.9 callout_stop.9 timeout.9 callout_reset.9
MLINKS+=timeout.9 callout.9 timeout.9 callout_active.9
MLINKS+=timeout.9 callout_deactivate.9 timeout.9 callout_drain.9
MLINKS+=timeout.9 callout_pending.9
MLINKS+=uio.9 uiomove.9
MLINKS+=vref.9 VREF.9
MLINKS+=vslock.9 vsunlock.9
@ -265,20 +272,25 @@ MLINKS+=condvar.9 cv_init.9 condvar.9 cv_destroy.9
MLINKS+=condvar.9 cv_wait.9 condvar.9 cv_wait_sig.9
MLINKS+=condvar.9 cv_timedwait.9 condvar.9 cv_timedwait_sig.9
MLINKS+=condvar.9 cv_signal.9 condvar.9 cv_broadcast.9
MLINKS+=condvar.9 cv_waitq_remove.9 condvar.9 cv_waitq_empty.9
MLINKS+=condvar.9 cv_broadcastpri.9
MLINKS+=condvar.9 cv_wmesg.9
MLINKS+=lock.9 lockinit.9 lock.9 lockdestroy.9
MLINKS+=lock.9 lockcount.9 lock.9 lockmgr.9
MLINKS+=lock.9 lockstatus.9 lock.9 lockmgr_printinfo.9
MLINKS+=microtime.9 bintime.9
MLINKS+=microtime.9 getbintime.9
MLINKS+=microtime.9 getmicrotime.9
MLINKS+=microtime.9 nanotime.9
MLINKS+=microtime.9 getnanotime.9
MLINKS+=microuptime.9 binuptime.9
MLINKS+=microuptime.9 getbinuptime.9
MLINKS+=microuptime.9 getmicrouptime.9
MLINKS+=microuptime.9 nanouptime.9
MLINKS+=microuptime.9 getnanouptime.9
MLINKS+=printf.9 log.9
MLINKS+=printf.9 uprintf.9
MLINKS+=printf.9 tprintf.9
@ -300,6 +312,9 @@ MLINKS+=sysctl_add_oid.9 SYSCTL_ADD_ULONG.9
MLINKS+=sysctl_add_oid.9 SYSCTL_ADD_OPAQUE.9
MLINKS+=sysctl_add_oid.9 SYSCTL_ADD_STRUCT.9
MLINKS+=sysctl_add_oid.9 SYSCTL_ADD_PROC.9
MLINKS+=sysctl_add_oid.9 SYSCTL_CHILDREN.9
MLINKS+=sysctl_add_oid.9 SYSCTL_STATIC_CHILDREN.9
MLINKS+=sysctl_add_oid.9 sysctl_move_oid.9
MLINKS+=sysctl_ctx_init.9 sysctl_ctx_free.9
MLINKS+=sysctl_ctx_init.9 sysctl_ctx_entry_add.9
MLINKS+=sysctl_ctx_init.9 sysctl_ctx_entry_del.9

View file

@ -26,10 +26,10 @@
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\"
.\" %FreeBSD: src/share/man/man9/SYSCALL_MODULE.9,v 1.5 2003/09/08 19:57:21 ru Exp %
.\" %FreeBSD: src/share/man/man9/SYSCALL_MODULE.9,v 1.5.4.1 2005/01/10 23:45:00 keramida Exp %
.\"
.\" $FreeBSD$
.Dd April 27, 2001
.Dd January 7, 2005
.Dt SYSCALL_MODULE 9
.Os
.Sh 名称
@ -50,27 +50,30 @@
.Fa name
という名前のカーネルモジュールの宣言に展開されます。
.Pp
.Fa offset
.Vt int
型へのポインタであり、
そこにはその syscall が割り当てられた
このマクロで要求される残りの引数は以下の通りです。
.Bl -tag -width ".Fa new_sysent"
.It Fa offset
syscall が割り付ける
.Vt "struct sysent"
構造体の中のオフセット位置が保存されます。
.Pp
.Fa new_sysent
は syscall を実装する関数およびこの関数が必要とする引数の個数
中のオフセットを保存する
.Vt int
へのポインタ。
.It Fa new_sysent
syscall を実装する関数およびこの関数が必要とする引数の数
.In ( sys/sysent.h
参照) を明示します。
.Pp
.Fa evh
は、カーネルモジュールのイベントハンドラ関数へのポインタであり、
この関数は引数
参照)。
.It Fa evh
引数
.Fa arg
を取ります
を取るカーネルモジュールのイベントハンドラ関数へのポインタ。
詳細については
.Xr module 9
を参照してください。
.It Fa arg
それが呼び出されるとき、
.Fa evh
イベントハンドラのコールバック関数へ渡される引数。
.El
.Sh 使用例
syscall モジュールのための最低限の例が、
.Pa /usr/share/examples/kld/syscall/module/syscall.c
@ -82,4 +85,4 @@ syscall
.Sh 作者
このマニュアルページは
.An Alexander Langer Aq alex@FreeBSD.org
が書きました。
によって書かれました。

View file

@ -26,7 +26,7 @@
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\"
.\" %FreeBSD: src/share/man/man9/VFS.9,v 1.10 2003/10/23 06:24:55 hmp Exp %
.\" %FreeBSD: src/share/man/man9/VFS.9,v 1.10.4.1 2005/01/10 23:29:08 keramida Exp %
.\"
.\" $FreeBSD$
.Dd July 24, 1996
@ -50,7 +50,6 @@
.Sh 関連項目
.Xr VFS_CHECKEXP 9 ,
.Xr VFS_FHTOVP 9 ,
.Xr VFS_INIT 9 ,
.Xr VFS_MOUNT 9 ,
.Xr VFS_QUOTACTL 9 ,
.Xr VFS_START 9 ,
@ -63,4 +62,4 @@
.Sh 作者
このマニュアルページは
.An Doug Rabson
が書きました。
によって書かれました。

View file

@ -22,10 +22,10 @@
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\"
.\" %FreeBSD: src/share/man/man9/VFS_CHECKEXP.9,v 1.11 2003/10/23 06:24:55 hmp Exp %
.\" %FreeBSD: src/share/man/man9/VFS_CHECKEXP.9,v 1.11.4.1 2005/01/10 23:51:38 keramida Exp %
.\"
.\" $FreeBSD$
.Dd September 10, 1999
.Dd January 7, 2005
.Os
.Dt VFS_CHECKEXP 9
.Sh 名称
@ -37,7 +37,8 @@
.Ft int
.Fn VFS_CHECKEXP "struct mount *mp" "struct sockaddr *nam" "int *exflagsp" "struct ucred **credanonp"
.Sh 解説
これは、クライアントにマウントポイントがエクスポート
.Fn VFS_CHECKEXP
マクロは、クライアントにマウントポイントがエクスポート
されているかどうかをチェックするために、NFS サーバが使用します。
.Pp
引数は以下の通りです。
@ -52,7 +53,8 @@
このクライアントに対する、匿名の証明の戻り値。
.El
.Pp
ファイルシステムのマウント構造に対して呼び出して、
.Fn VFS_CHECKEXP
マクロは、ファイルシステムのマウント構造に対して呼び出して、
.Fa nam
にアドレスが含まれるクライアントに対してそのファイルシステムが
エクスポートされているかどうかを決定できます。
@ -71,8 +73,8 @@
.Xr vfs_export_lookup 9
を呼び出すべきです。
.Sh 戻り値
そのクライアントに対するエクスポートフラグと (
.Xr vfs_export_lookup 9
そのクライアントに対するエクスポートフラグと
.Pf ( Xr vfs_export_lookup 9
から返される) 匿名の証明が
.Fa *exflagsp
@ -86,4 +88,4 @@
.Sh 作者
このマニュアルページは
.An Alfred Perlstein
が書きました。
によって書かれました。

View file

@ -26,10 +26,10 @@
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\"
.\" %FreeBSD: src/share/man/man9/VFS_FHTOVP.9,v 1.16 2003/10/23 06:24:55 hmp Exp %
.\" %FreeBSD: src/share/man/man9/VFS_FHTOVP.9,v 1.16.4.1 2005/01/10 23:51:38 keramida Exp %
.\"
.\" $FreeBSD$
.Dd July 24, 1996
.Dd January 7, 2005
.Os
.Dt VFS_FHTOVP 9
.Sh 名称
@ -42,7 +42,8 @@
.Ft int
.Fn VFS_FHTOVP "struct mount *mp" "struct fid *fhp" "struct vnode **vpp"
.Sh 解説
これは NFS ファイルハンドルから vnode へ
.Fn VFS_FHTOVP
マクロは NFS ファイルハンドルから vnode へ
変換するために NFS サーバによって使用されます。
.Pp
引数は以下の通りです。
@ -63,7 +64,9 @@
例えば、UFS ファイルシステムは、ファイルハンドルの中に inode 番号
および inode 世代カウンタを格納します。
.Pp
一般的にはこの関数への呼び出し前は、そのファイルがクライアントにとって
一般的には
.Fn VFS_FHTOVP
への呼び出し前は、そのファイルがクライアントにとって
アクセス可能であるかどうかを検査するために
.Xr VFS_CHECKEXP 9
呼び出しが行われます。
@ -79,4 +82,4 @@
.Sh 作者
このマニュアルページは
.An Doug Rabson
が書きました。
によって書かれました。

View file

@ -26,10 +26,10 @@
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\"
.\" %FreeBSD: src/share/man/man9/VFS_MOUNT.9,v 1.13 2003/10/23 06:24:55 hmp Exp %
.\" %FreeBSD: src/share/man/man9/VFS_MOUNT.9,v 1.13.4.1 2005/01/10 23:46:12 keramida Exp %
.\"
.\" $FreeBSD$
.Dd July 24, 1996
.Dd January 7, 2005
.Os
.Dt VFS_MOUNT 9
.Sh 名称
@ -40,30 +40,22 @@
.In sys/mount.h
.In sys/vnode.h
.Ft int
.Fn VFS_MOUNT "struct mount *mp" "char *path" "caddr_t data" "struct nameidata *ndp" "struct thread *td"
.Fn VFS_MOUNT "struct mount *mp" "struct thread *td"
.Sh 解説
システムの名前空間にファイルシステムをマウントします。
.Fn VFS_MOUNT
マクロは、システムの名前空間にファイルシステムをマウントするか、
既にマウントされたファイルシステムの属性を更新します。
.Pp
引数は以下の通りです。
.Bl -tag -width data
.It Fa mp
ファイルシステムを表現する構造体。
.It Fa path
そのファイルシステムがマウントされるパス名。
.It Fa data
ファイルシステム固有データ。
これはカーネルに
.Xr copyin 9
を使用して読み込まれるべきです。
.It Fa ndp
マウントポイントのパス名での
.Xr namei 9
の呼び出しの結果。
.It Fa td
ファイルシステムをマウントしようとしているスレッド。
.El
.Pp
これは、新しいファイルシステムをマウントする目的と、
.Fn VFS_MOUNT
マクロは、新しいファイルシステムをマウントする目的と、
既存のファイルシステムの属性変更の目的の、両方の用途で呼び出されます。
.Fa mp->mnt_flag
@ -90,4 +82,4 @@
.Sh 作者
このマニュアルページは
.An Doug Rabson
が書きました。
によって書かれました。

View file

@ -24,7 +24,7 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
.\" DAMAGE.
.\"
.\" %FreeBSD: src/share/man/man9/VFS_SET.9,v 1.7 2003/10/23 06:24:55 hmp Exp %
.\" %FreeBSD: src/share/man/man9/VFS_SET.9,v 1.7.4.1 2005/01/10 23:47:20 keramida Exp %
.\"
.\" $FreeBSD$
.Dd December 2, 2001
@ -47,7 +47,7 @@
はローダブルモジュールのために与えられた
.Fa vfsops , fsname
および
.Fa flags ,
.Fa flags
.Vt vfsconf
構造体を作成し、イベントハンドラとして
@ -57,7 +57,7 @@
の呼び出しによって宣言します。
.Pp
.Fa flags
引数のために利用可能な値は以下に記述されています。
引数のために利用可能な値は以下のとおりです:
.Bl -hang -width ".Dv VFCF_SYNTHETIC"
.It Dv VFCF_STATIC
ファイルシステムはカーネル内で静的に利用可能であるべきです。
@ -103,4 +103,4 @@ VFS_SET(myfs_vfsops, skelfs, 0);
.Sh 作者
このマニュアルページは
.An Chad David Aq davidc@acns.ab.ca
が書きました。
によって書かれました。

View file

@ -26,10 +26,10 @@
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\"
.\" %FreeBSD: src/share/man/man9/VFS_START.9,v 1.10 2003/10/23 06:24:55 hmp Exp %
.\" %FreeBSD: src/share/man/man9/VFS_START.9,v 1.10.4.2 2005/01/13 13:45:52 keramida Exp %
.\"
.\" $FreeBSD$
.Dd July 24, 1996
.Dd January 7, 2005
.Os
.Dt VFS_START 9
.Sh 名称
@ -42,15 +42,19 @@
.Ft int
.Fn VFS_START "struct mount *mp" "int flags" "struct thread *td"
.Sh 解説
これは
.Fn VFS_START
マクロは
.Xr VFS_MOUNT 9
の後且つファイルシステムへの最初のアクセスの前に呼び出されます。
.Pp
引数は以下の通りです。
.Bl -tag -width flags
.It Fa mp
ファイルシステム。
.It Fa flags
??
フラグはファイルシステムの
.Va vfs_start
メソッドに渡します。
.It Fa td
ファイルシステムを起動しているスレッド。
.El
@ -60,4 +64,4 @@
.Sh 作者
このマニュアルページは
.An Doug Rabson
が書きました。
によって書かれました。

View file

@ -26,10 +26,10 @@
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\"
.\" %FreeBSD: src/share/man/man9/VFS_STATFS.9,v 1.10 2003/10/23 06:24:55 hmp Exp %
.\" %FreeBSD: src/share/man/man9/VFS_STATFS.9,v 1.10.4.2 2005/01/13 13:45:52 keramida Exp %
.\"
.\" $FreeBSD$
.Dd July 24, 1996
.Dd January 7, 2005
.Os
.Dt VFS_STATFS 9
.Sh 名称
@ -42,7 +42,8 @@
.Ft int
.Fn VFS_STATFS "struct mount *mp" "struct statfs *sbp" "struct thread *td"
.Sh 解説
この呼び出しは、ファイルシステムについての様々な情報を返します。
.Fn VFS_STATFS
マクロは、ファイルシステムについての様々な情報を返します。
この情報には、推奨されている入出力サイズ、空き領域、空き inode 等があります。
.Pp
引数は以下の通りです。
@ -50,14 +51,71 @@
.It Fa mp
ファイルシステム。
.It Fa sbp
ファイルシステムの状態のための戻り値。
ファイルシステムに関する情報が置かれる、
.In sys/mount.h
で定義される
.Vt statfs
構造体です。
.It Fa td
ファイルシステムに問い合わせているスレッド。
.El
.Pp
ファイルシステムに関連する
.Vt "struct statfs"
フイールドは以下の通りです。
.Bl -tag -width ".Va f_mntfromname"
.It Va f_type
ファイルシステムのタイプ。
.It Va f_flags
エクスポートされたマウントフラグのコピー。
.It Va f_bsize
フラグメントサイズ。
.It Va f_iosize
最適化された転送ブロックサイズ。
.It Va f_blocks
ファイルシステム中のデータブロックの総数。
.It Va f_bfree
ファイルシステム中のフリーブロックの数。
.It Va f_bavail
スーパユーザでないプロセスで利用可能なフリーブロックの数。
.It Va f_files
ファイルシステム中のファイルノードの総数。
.It Va f_ffree
スーパユーザでないプロセスで利用可能なフリーのノードの数。
.It Va f_syncwrites
ファイルシステムがマウントされたときからの同期書き込みの数。
.It Va f_asyncwrites
ファイルシステムがマウントされたときからの非同期書き込みの数。
.It Va f_syncreads
ファイルシステムがマウントされたときからの同期読み込みの数。
.It Va f_asyncreads
ファイルシステムがマウントされたときからの非同期読み込みの数。
.It Va f_namemax
このファイルシステムでの最大のファイル名の長さ。
.It Va f_owner
ファイルシステムをマウントしたユーザのユーザ ID。
.It Va f_fsid
ユニークなファイルシステム ID。
.It Va f_fstypename
ファイルシステムタイプ名。
最大
.Dv MFSNAMELEN
バイトの文字列。
.It Va f_mntfromname
マウントされたファイルシステムのデバイス名。
最大
.Dv MNAMELEN
バイトの文字列。
.It Va f_mntonname
ファイルシステムがマウントされたディレクトリの名前。
最大
.Dv MNAMELEN
バイトの文字列。
.El
.Sh 関連項目
.Xr VFS 9 ,
.Xr vnode 9
.Sh 作者
このマニュアルページは
.An Doug Rabson
が書きました。
によって書かれました。

View file

@ -26,10 +26,10 @@
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\"
.\" %FreeBSD: src/share/man/man9/VFS_SYNC.9,v 1.12 2003/10/23 06:24:55 hmp Exp %
.\" %FreeBSD: src/share/man/man9/VFS_SYNC.9,v 1.12.4.2 2005/01/13 13:45:52 keramida Exp %
.\"
.\" $FreeBSD$
.Dd July 24, 1996
.Dd January 7, 2005
.Os
.Dt VFS_SYNC 9
.Sh 名称
@ -42,10 +42,11 @@
.Ft int
.Fn VFS_SYNC "struct mount *mp" "int waitfor" "struct ucred *cred" "struct thread *td"
.Sh 解説
これはファイルシステムの全ての未書き込みのデータを書き出します。
.Fn VFS_SYNC
マクロはファイルシステムの全ての未書き込みのデータを書き出します。
.Pp
引数は以下の通りです。
.Bl -tag -width waitfor
.Bl -tag -width ".Fa waitfor"
.It Fa mp
ファイルシステム。
.It Fa waitfor
@ -65,7 +66,11 @@
呼び出しているスレッド。
.El
.Pp
これは、通常、ファイルシステム中の全ての vnode のために
.Fn VFS_SYNC
マクロは、ファイルシステムの
.Va vfs_sync
メソッドを呼び出します。
それは、通常、ファイルシステム中の全ての vnode のために
.Xr VOP_FSYNC 9
を呼び出します。
.Sh 関連項目
@ -77,4 +82,4 @@
.Sh 作者
このマニュアルページは
.An Doug Rabson
が書きました。
によって書かれました。

View file

@ -26,10 +26,10 @@
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\"
.\" %FreeBSD: src/share/man/man9/VFS_UNMOUNT.9,v 1.10 2003/10/23 06:24:55 hmp Exp %
.\" %FreeBSD: src/share/man/man9/VFS_UNMOUNT.9,v 1.10.4.1 2005/01/10 23:08:56 keramida Exp %
.\"
.\" $FreeBSD$
.Dd July 24, 1996
.Dd January 7, 2005
.Os
.Dt VFS_UNMOUNT 9
.Sh 名称
@ -42,20 +42,26 @@
.Ft int
.Fn VFS_UNMOUNT "struct mount *mp" "int mntflags" "struct thread *td"
.Sh 解説
ファイルシステムをアンマウントします。
.Fn VFS_UNMOUNT
マクロは、ファイルシステムをアンマウントします。
.Pp
引数は以下の通りです。
.Bl -tag -width mntflags
.It Fa mp
ファイルシステム。
.It Fa mntflags
いろいろなフラグ。
アンマウント操作のためのフラグのビットマスクです。
現在
.Fn VFS_UNMOUNT
によってサポートされているフラグは以下の通りです。
.Bl -tag -width ".Dv MNT_FORCE"
.It Dv MNT_FORCE
ファイルシステムがアンマウントされる前に
オープンしているファイルは強制的に閉じられます。
.El
.It Fa td
ファイルシステムをアンマウントしているスレッド。
.El
.Pp
.Dv MNT_FORCE
フラグが指定された場合には、開いているファイルは強制的に閉じられるべきです。
.Sh 関連項目
.Xr vflush 9 ,
.Xr VFS 9 ,
@ -63,4 +69,4 @@
.Sh 作者
このマニュアルページは
.An Doug Rabson
が書きました。
によって書かれました。

View file

@ -26,10 +26,10 @@
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\"
.\" %FreeBSD: src/share/man/man9/VFS_VGET.9,v 1.14 2003/10/23 06:24:55 hmp Exp %
.\" %FreeBSD: src/share/man/man9/VFS_VGET.9,v 1.14.4.1 2005/01/10 23:51:38 keramida Exp %
.\"
.\" $FreeBSD$
.Dd July 24, 1996
.Dd January 7, 2004
.Os
.Dt VFS_VGET 9
.Sh 名称
@ -42,7 +42,8 @@
.Ft int
.Fn VFS_VGET "struct mount *mp" "ino_t ino" "int flags" "struct vnode **vpp"
.Sh 解説
これは inode 番号を、ロックされた vnode へ変換します。
.Fn VFS_VGET
マクロは inode 番号を、ロックされた vnode へ変換します。
.Pp
引数は以下の通りです。
.Bl -tag -width ".Fa flags"
@ -74,4 +75,4 @@ NFS
.Sh 作者
このマニュアルページは
.An Doug Rabson
が書きました。
によって書かれました。

View file

@ -26,7 +26,7 @@
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\"
.\" %FreeBSD: src/share/man/man9/bus_alloc_resource.9,v 1.19 2004/06/16 08:33:57 ru Exp %
.\" %FreeBSD: src/share/man/man9/bus_alloc_resource.9,v 1.19.2.1 2005/03/14 07:19:03 jmg Exp %
.\"
.\" $FreeBSD$
.Dd May 18, 2000
@ -174,8 +174,9 @@ PCI
.Xr device 9 ,
.Xr driver 9
.Sh 作者
.An -nosplit
このマニュアルページは
.An Alexander Langer Aq alex@big.endian.de
が書き、部分的に
によって書かれ、部分的に
.An Warner Losh Aq imp@FreeBSD.org
が書きました。
によって書かれました。

View file

@ -26,10 +26,10 @@
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\"
.\" %FreeBSD: src/share/man/man9/device_find_child.9,v 1.8 2003/10/23 06:19:45 hmp Exp %
.\" %FreeBSD: src/share/man/man9/device_find_child.9,v 1.8.4.1 2005/02/25 20:25:35 njl Exp %
.\"
.\" $FreeBSD$
.Dd June 16, 1998
.Dd February 8, 2005
.Dt DEVICE_FIND_CHILD 9
.Os
.Sh 名称
@ -39,15 +39,22 @@
.In sys/param.h
.In sys/bus.h
.Ft device_t
.Fn device_find_child "device_t dev" "const char* name" "int unit"
.Fn device_find_child "device_t dev" "const char *classname" "int unit"
.Sh 解説
この関数は、
.Dv dev
の子で、
.Fa name
.Fa classname
および
.Fa unit
を持つものを検索します。
.Fa unit
が -1 であるなら、一致する
.Fa classname
.Dv dev
の最初の子を返します。
(すなわち、最も低い unit です。)
.Sh 戻り値
存在している場合には子デバイスが返され、そうでない場合には NULL が返されます。
.Sh 関連項目
@ -55,4 +62,4 @@
.Sh 作者
このマニュアルページは
.An Doug Rabson
が書きました。
によって書かれました。

View file

@ -22,10 +22,10 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.\" %FreeBSD: src/share/man/man9/make_dev.9,v 1.15 2003/10/23 01:54:06 hmp Exp %
.\" %FreeBSD: src/share/man/man9/make_dev.9,v 1.15.4.1 2005/03/31 14:20:12 brueffer Exp %
.\"
.\" $FreeBSD$
.Dd May 27, 2001
.Dd March 28, 2005
.Os
.Dt MAKE_DEV 9
.Sh 名称
@ -34,23 +34,23 @@
.Nm destroy_dev ,
.Nm dev_depends
.Nd デバイスのための
.Vt dev_t
.Vt cdev
および DEVFS 登録の管理
.Sh 書式
.In sys/param.h
.In sys/conf.h
.Ft dev_t
.Ft struct cdev
.Fn make_dev "struct cdevsw *cdevsw" "int minor" "uid_t uid" "gid_t gid" "int perms" "const char *fmt" ...
.Ft dev_t
.Fn make_dev_alias "dev_t pdev" "const char *fmt" ...
.Ft struct cdev
.Fn make_dev_alias "struct cdev pdev" "const char *fmt" ...
.Ft void
.Fn destroy_dev "dev_t dev"
.Fn destroy_dev "struct cdev dev"
.Ft void
.Fn dev_depends "dev_t pdev" "dev_t cdev"
.Fn dev_depends "struct cdev pdev" "struct cdev cdev"
.Sh 解説
.Fn make_dev
関数は新しいデバイスのための
.Fa dev_t
.Fa cdev
構造体を作成します。
DEVFS が利用可能の場合には、新しいデバイスの存在も通知されます。
そのデバイスは
@ -93,7 +93,7 @@ DEVFS
関数は
.Fn make_dev
から返された
.Ft dev_t
.Ft cdev
をとり、このデバイスのための別の名前 (別名) を作成します。
.Fn make_dev
の呼出しの前の
@ -104,7 +104,7 @@ DEVFS
関数は
.Fn make_dev
から返された
.Fa dev_t
.Fa cdev
をとり、そのデバイスの登録を削除します。
.Fn make_dev_alias
で作成されたデバイスで
@ -135,5 +135,5 @@ DEVFS
関数
.Fn dev_depends
.Fx 5.0 .
.Fx 5.0
ではじめて登場しました。

View file

@ -30,7 +30,7 @@
.\" If you integrate this manpage in another OS, I'd appreciate a note
.\" - eivind@FreeBSD.org
.\"
.\" %FreeBSD: src/share/man/man9/namei.9,v 1.25 2003/06/02 15:02:06 ru Exp %
.\" %FreeBSD: src/share/man/man9/namei.9,v 1.25.4.1 2005/03/04 00:17:40 brueffer Exp %
.\"
.\" $FreeBSD$
.Dd May 27, 2003
@ -126,8 +126,6 @@ UIO
を使用するべきです。)
.It Dv LOCKPARENT
このフラグは
.Va ni_vdp
.Va ni_vp
が一致しない場合には、
.Fn namei
@ -278,7 +276,7 @@ UIO
.Fn NDFREE
関数に渡すことが可能です。
パス名のバッファをそのままで保持するために、
.Dv ND_NO_FREE_PNBUF
.Dv NDF_NO_FREE_PNBUF
フラグを
.Fn NDFREE
関数に渡すことが可能です。
@ -298,7 +296,7 @@ UIO
.An -nosplit
このマニュアルページは
.An Eivind Eklund Aq eivind@FreeBSD.org
が書き、その後で
によって書かれ、その後で
.An Hiten M. Pandya Aq hmp@FreeBSD.org
が大幅に修正しました。
.Sh バグ

View file

@ -34,7 +34,7 @@
.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
.\" POSSIBILITY OF SUCH DAMAGE.
.\"
.\" %FreeBSD: src/share/man/man9/physio.9,v 1.15 2004/07/10 01:10:17 imp Exp %
.\" %FreeBSD: src/share/man/man9/physio.9,v 1.15.2.1 2005/01/05 08:31:19 krion Exp %
.\" $FreeBSD$
.\"
.Dd July 8, 2004
@ -81,7 +81,7 @@
は常にリターンする前に全ての要求された転送が完了するまで待ちます。
.Pp
引数の詳細を下記に示します。
.Bl -tag -width "strategy"
.Bl -tag -width indent
.It Fa dev
デバイスを識別するために関連付けられたデバイス番号。
.It Fa uio

View file

@ -24,7 +24,7 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.\" %FreeBSD: src/share/man/man9/printf.9,v 1.4 2004/08/10 09:19:08 joerg Exp %
.\" %FreeBSD: src/share/man/man9/printf.9,v 1.4.2.1 2005/01/23 10:08:45 glebius Exp %
.\"
.\" $FreeBSD$
.Dd August 10, 2004
@ -37,13 +37,14 @@
.In sys/types.h
.In sys/systm.h
.Ft int
.Fn printf "const char *fmt" "..."
.Fn printf "const char *fmt" ...
.Ft void
.Fn tprintf "struct proc *p" "int pri" "const char *fmt" "..."
.Fn tprintf "struct proc *p" "int pri" "const char *fmt" ...
.Ft int
.Fn uprintf "const char *fmt" "..."
.Fn uprintf "const char *fmt" ...
.In sys/syslog.h
.Ft void
.Fn log "int pri" "const char *fmt" "..."
.Fn log "int pri" "const char *fmt" ...
.Sh 解説
.Xr printf 9
ファミリの関数は
@ -57,7 +58,7 @@
.Fn tprintf
関数は
.Fa pri
\&-1 でない場合には、プロセス
\-1 でない場合には、プロセス
.Fa p
に関連づけられた tty およびロギングファシリティに出力します。
.Fn log
@ -86,7 +87,7 @@
この印字マスクは 2 つの部分で構成されます。
基数と引数です。
基数値は整数値として表現される出力の基数です。
例えば、\\10 は 8 進数を \\20 は 16 進数を与えます。
例えば、\e10 は 8 進数を \e20 は 16 進数を与えます。
引数はビット識別子の並びとして構成されます。
個々のビット識別子はこの識別子が表すビット番号の整数値で始まります。
識別子の残り部分はそのビットの名前を含む文字列です。
@ -122,7 +123,7 @@
までを使用します。
代わりに、
.Fa pri
\&-1 が与えられた場合には、そのメッセージはその前の
\-1 が与えられた場合には、そのメッセージはその前の
.Fn log
の呼び出しによって開始された、最近のログメッセージに追加されます。
これらのメッセージはカーネル自身によって生成されるため、
@ -142,8 +143,8 @@ void
printf_test(void)
{
printf("reg=%b\\n", 3, "\\10\\2BITTWO\\1BITONE\\n");
printf("out: %4D\\n", "AAAA", ":");
printf("reg=%b\en", 3, "\e10\e2BITTWO\e1BITONE\en");
printf("out: %4D\en", "AAAA", ":");
}
.Ed
.Pp
@ -155,11 +156,11 @@ out: 41:41:41:41
.Pp
この呼び出し
.Bd -literal -offset indent
log(LOG_DEBUG, "%s%d: been there.\\n", sc->sc_name, sc->sc_unit);
log(LOG_DEBUG, "%s%d: been there.\en", sc->sc_name, sc->sc_unit);
.Ed
.Pp
は適切なデバッグメッセージを優先度
.Em kern.debug
.Dq Li kern.debug
でシステムログに追加します。
.Sh 関連項目
.Xr printf 3 ,

View file

@ -23,7 +23,7 @@
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\"
.\" %FreeBSD: src/share/man/man9/sleep.9,v 1.43 2004/02/17 13:31:36 maxim Exp %
.\" %FreeBSD: src/share/man/man9/sleep.9,v 1.43.2.1 2005/01/10 08:27:21 cperciva Exp %
.\" $FreeBSD$
.\" "
.Dd December 17, 1998
@ -95,6 +95,10 @@
長くて
.Fa timo
\&/ hz 秒間 (0 はタイムアウトなしを意味します) スリープします。
.Va Giant
ロックが保持されていないなら、
.Fa timo
は 0 以外でなければなりません。
.Fa priority
.Dv PCATCH
@ -156,4 +160,4 @@ sleep/wakeup
.An -nosplit
このマニュアルページは
.An J\(:org Wunsch Aq joerg@FreeBSD.org
が書きました。
によって書かれました。

View file

@ -1,4 +1,5 @@
.\" Copyright (c) 1995-2001 FreeBSD Inc.
.\"-
.\" Copyright (c) 1995-2005 The FreeBSD Project
.\" All rights reserved.
.\"
.\" Redistribution and use in source and binary forms, with or without
@ -22,7 +23,7 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.\" %FreeBSD: src/share/man/man9/style.9,v 1.110 2004/07/03 18:29:24 ru Exp %
.\" %FreeBSD: src/share/man/man9/style.9,v 1.110.2.1 2005/03/01 12:44:49 brueffer Exp %
.\" $FreeBSD$
.\"
.Dd December 7, 2001
@ -50,7 +51,7 @@
* CSRG の KNF (Kernel Normal Form, カーネル標準書式) に基づいています。
*
* @(#)style 1.14 (Berkeley) 4/28/95
* $\&FreeBSD: src/share/man/man9/style.9,v 1.110 2004/07/03 18:29:24 ru Exp $
* $\&FreeBSD: src/share/man/man9/style.9,v 1.110.2.1 2005/03/01 12:44:49 brueffer Exp $
*/
/*
@ -65,6 +66,30 @@
*/
.Ed
.Pp
著作権のヘッダは複数行にわたるコメントであるべきで、
コメントの最初の行は次のように星 (アスタリスク) の後ろにダッシュ (-) を
付けます:
.Bd -literal
/*-
* Copyright (c) 1984-2025 John Q. Public. All Rights Reserved.
*
* 長くて、退屈なライセンスはここに記述しますが、簡潔にするために
* 編集しています
*/
.Ed
.Pp
自動スクリプトは最初のカラムが
.Dq Li "/*-"
で始まるすべてのコメントを対照としてツリーからライセンス情報を集めます。
利用者がライセンスまたは著作権表示でもない最初のカラムで始まるコメントを
最初のカラムから始まるコメントでライセンスや著作権表示でないものを
.Xr indent 1
に再整形させたくない場合は、
それらのコメントのダッシュを星に変えてください。
最初のコメント以外のカラムで始まるコメントは
決してライセンス声明とはみなしません。
訳注: 行頭にないものはライセンス表明とみなしません。
.Pp
著作権ヘッダの後には空行を 1 行入れ、ソースファイルには
.Va rcsid
を付けます。
@ -77,8 +102,8 @@ C/C++
存在すれば維持します。
これには、ファイルの来歴を示す複数の ID も含みます。
一般的に、外来の ID またはその下部構造は編集しません。
さもなければ
.Dq Li ( "#if defined(LIBC_SCCS)"
さもなければ
.Dq ( Li "#if defined(LIBC_SCCS)"
のように) 囲まれていない場合には、全ての互換性のない小片を隠すため、および
その ID をオブジェクトファイルから追い出しておくために、両方を
.Dq Li "#if 0 ... #endif"
@ -94,14 +119,14 @@ static char sccsid[] = "@(#)style 1.14 (Berkeley) 4/28/95";
#endif
#include <sys/cdefs.h>
__FBSDID("$\&FreeBSD: src/share/man/man9/style.9,v 1.110 2004/07/03 18:29:24 ru Exp $");
__FBSDID("$\&FreeBSD: src/share/man/man9/style.9,v 1.110.2.1 2005/03/01 12:44:49 brueffer Exp $");
.Ed
.Pp
ヘッダファイルの前に、空行を 1 行付けます。
.Pp
カーネルのインクルードファイル (すなわち、
.Pa sys/*.h
) が初めに来ます。
.Pa sys/*.h )
が初めに来ます。
通常、
.In sys/types.h
または
@ -141,7 +166,7 @@ __FBSDID("$\&FreeBSD: src/share/man/man9/style.9,v 1.110 2004/07/03 18:29:24 ru
.Ed
.Pp
グローバルなパス名は
.In /usr/include/paths.h
.In paths.h
で定義されています。
プログラムにローカルなパス名はローカルディレクトリの
.Qq Pa pathnames.h
@ -160,7 +185,7 @@ __FBSDID("$\&FreeBSD: src/share/man/man9/style.9,v 1.110 2004/07/03 18:29:24 ru
.Ic #define
したり名前を定義したりしてはいけません。
.Pp
.Dq Li 安全でない
.Dq 安全でない
マクロ (副作用を持っているもの) の名前と、
明らかな定数のマクロの名前はすべて大文字です。
式のように展開されるマクロは、単一のトークンにするか外側に括弧をつけます。
@ -290,7 +315,8 @@ enum enumtype { ONE, TWO } et;
これらの識別子はアスタリスクから 1 つの空白で分離します。
.Pp
構造体の中で変数を宣言する時には、
使用順、サイズ順、アルファベット順にソートして宣言します。
使用順、サイズ順 (大きいものから小さなものへ)、
アルファベット順にソートして宣言します。
最初の区分は通常適用しませんが、例外があります。
各宣言は、それぞれ独立した行にて行います。
構造体の名前の位置を、あなたの判断で読み易いように、
@ -303,13 +329,13 @@ enum enumtype { ONE, TWO } et;
複数のソースファイルで使用される場合は別のヘッダファイルで宣言されるべきです。
構造体がヘッダファイルで宣言されている場合には、
それら構造体の使用は、宣言とは分けられるべきで、かつ
.Ic "extern
.Ic extern
であるべきです。
.Bd -literal
struct foo {
struct foo *next; /* 使用中の foo のリスト */
struct mumble amumble; /* mumble のコメント */
int bar; /* コメントを揃えようとしています */
int bar; /* コメントを揃えます */
struct verylongtypename *baz; /* タブ 2 個には収まりません */
};
struct foo *foohead; /* グローバルな foo リストの先頭 */
@ -321,10 +347,11 @@ struct foo *foohead; /*
従って、前の例をより良く書くと次のようになります。
.Bd -literal
#include <sys/queue.h>
struct foo {
LIST_ENTRY(foo) link; /* foo リストにキューマクロを使用 */
struct mumble amumble; /* mumble のコメント */
int bar; /* コメントを揃えようとしています */
int bar; /* コメントを揃えます */
struct verylongtypename *baz; /* タブ 2 個には収まりません */
};
LIST_HEAD(, foo) foohead; /* グローバルな foo リストの先頭 */
@ -389,7 +416,7 @@ typedef const long baz; /*
ガイドラインを使用するのに十分です。
.Pp
カーネルはパラメータの型に関連付けられた名前を持ちます。
例えば、カーネル内でこのように使用します。
例えば、カーネル内で次のように使用します:
.Bd -literal
void function(int fd);
.Ed
@ -401,7 +428,7 @@ void function(int fd);
(アンダスコアで開始する) 名前を使用するか、
型だけで名前を使用しないかのどちらかが必要です。
保護された名前の使用がより望ましいです。
例えば、このように使用します。
例えば、次のように使用します:
.Bd -literal
void function(int);
.Ed
@ -411,8 +438,8 @@ void function(int);
void function(int _fd);
.Ed
.Pp
プロトタイプは関数名の行揃えを行なうために、タブの後に追加のスペース文字を
置いても構いません。
プロトタイプは関数名の行揃えを行なうために、次のように
タブの後に追加のスペース文字を置いても構いません:
.Bd -literal
static char *function(int _arg, const char *_arg2, struct foo *_arg3,
struct bar *_arg4);
@ -580,7 +607,7 @@ main(int argc, char *argv[])
.Bd -literal
exit(EX_OK); /*
* "Exit 0 on success." (成功時は 0 で終了)
* の様に明白なコメントは避けてください
* の様に分かりきったコメントは避けてください
*/
}
.Ed
@ -646,25 +673,26 @@ ANSI C
ポインタは
.Dv NULL
と比較します。
例えば、
.Bd -literal
!(p = f())
.Ed
例えば、次のように使います:
.Pp
ではなく、このように使います。
.Bd -literal
(p = f()) == NULL
.Ed
.Pp
真理値ではない場合、テストには
次のようには使いません:
.Bd -literal
!(p = f())
.Ed
.Pp
真理値 (ブール値) ではない場合、テストには
.Ic \&!
を使用しないでください。
例えば、下記のように使います。
例えば、次のように使います:
.Bd -literal
if (*p == '\e0')
.Ed
.Pp
下記のようには使いません。
次のようには使いません:
.Bd -literal
if (!*p)
.Ed
@ -689,7 +717,7 @@ if (!*p)
}
.Ed
.Pp
古いスタイルの関数宣言はこのようになっています
古いスタイルの関数宣言はこのようになっています:
.Bd -literal
static char *
function(a1, a2, fl, a4)
@ -704,7 +732,7 @@ ANSI
長いパラメータリストの折り返しには、
4 個の空白による通常のインデントを付けます。
.Pp
可変個数の引数はこのようにします
可変個数の引数はこのようにします:
.Bd -literal
#include <stdarg.h>
@ -789,6 +817,7 @@ usage()
ソースリポジトリの文体の変更 (空白文字の変更を含む) は困難で、
正当な理由なしには避けるべきです。
リポジトリの中のおおよそ
.Fx
KNF
.Nm
に適合しているコードは、この適合から離れてはなりません。
@ -797,8 +826,8 @@ KNF
コードはコードチェッカ (例えば、
.Xr lint 1
または
.Nm gcc Fl Wall
)
.Nm gcc Fl Wall )
通過し、発生する警告は最小限となるべきです。
.Sh 関連項目
.Xr indent 1 ,

View file

@ -31,7 +31,7 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.\" %FreeBSD: src/share/man/man9/suser.9,v 1.25.2.1 2004/08/24 20:43:10 simon Exp %
.\" %FreeBSD: src/share/man/man9/suser.9,v 1.25.2.2 2005/01/05 08:31:19 krion Exp %
.\" $FreeBSD$
.\"
.Dd April 2, 2002

View file

@ -24,7 +24,7 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
.\" DAMAGE.
.\"
.\" %FreeBSD: src/share/man/man9/sx.9,v 1.29 2004/07/11 16:08:25 darrenr Exp %
.\" %FreeBSD: src/share/man/man9/sx.9,v 1.29.2.2 2005/01/17 11:34:57 keramida Exp %
.\"
.\" $FreeBSD$
.Dd August 14, 2001
@ -73,7 +73,7 @@
.Ft void
.Fn sx_assert "struct sx *sx" "int what"
.\"
.Ss sx ユーティリティマクロ
.Ss Nm Ss ユーティリティマクロ
.Fn sx_unlock "struct sx *sx"
.Fn SX_SYSINIT "name" "struct sx *sx" "const char *description"
.\"
@ -195,6 +195,17 @@ mutex
スリープしている間に
.Nm
ロック上に共有ロックまたは排他ロックを所有することは許可されます。
その結果、ミューテックスを保持している間、
.Nm
ロックは獲得されないかもしれません。
そうでなければ、ミューテックスを獲得した後に同じ
.Nm
ロック上で別のスレッドがブロックされる間に、
一つのスレッドが
.Nm
ロックを保持している間にスリープするなら、
事実上、2 番目のスレッドは最後には許可されていないミューテックスを
保持している間にスリープすることになるでしょう。
.Sh 関連項目
.Xr condvar 9 ,
.Xr mtx_pool 9 ,

View file

@ -34,10 +34,10 @@
.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
.\" POSSIBILITY OF SUCH DAMAGE.
.\"
.\" %FreeBSD: src/share/man/man9/timeout.9,v 1.23 2004/06/16 08:33:57 ru Exp %
.\" %FreeBSD: src/share/man/man9/timeout.9,v 1.23.2.2 2005/03/21 23:01:30 iedowse Exp %
.\" $FreeBSD$
.\"
.Dd September 10, 1996
.Dd February 6, 2005
.Dt TIMEOUT 9
.Os
.Sh 名称
@ -47,7 +47,10 @@
.Nm callout_init ,
.Nm callout_stop ,
.Nm callout_drain ,
.Nm callout_reset
.Nm callout_reset ,
.Nm callout_pending ,
.Nm callout_active ,
.Nm callout_deactivate
.Nd 明示された時間長の後の関数の実行
.Sh 書式
.In sys/types.h
@ -74,6 +77,11 @@ struct callout_handle handle = CALLOUT_HANDLE_INITIALIZER(&handle)
.Fn callout_drain "struct callout *c"
.Ft void
.Fn callout_reset "struct callout *c" "int ticks" "timeout_t *func" "void *arg"
.Ft int
.Fn callout_pending "struct callout *c"
.Ft int
.Fn callout_active "struct callout *c"
.Fn callout_deactivate "struct callout *c"
.Sh 解説
関数
.Fn timeout
@ -162,8 +170,8 @@ timeout
.Fn untimeout
のための O(1) 実行時間を提供します。
timeout (訳注: および untimeout) は
.Fn splsoftclock
の状態で
.Va Giant
ロックが保持されている状態で、
.Fn softclock
から実行されます。
従って、再入から保護されます。
@ -189,8 +197,8 @@ timeout (
引数が 0 の場合には、callout 構造体は
.Dq マルチプロセッサセーフ
であるとはみなされません。
すなわち、ジャイアントロックが callout 関数の呼出し前に
獲得され、callout 関数が戻るときに解放されるようにします。
すなわち、ジャイアントロックがコールアウト関数の呼出し前に
獲得され、コールアウト関数が戻るときに解放されるようにします。
.Pp
関数
.Fn callout_stop
@ -198,7 +206,13 @@ timeout (
コールアウトが保留中の場合には、
.Fn callout_stop
は 0 でない値を返します。
コールアウトが既に実行されたか現在実行中の場合には、0 が返されます。
コールアウトが設定されていないか既に実行されているか現在実行中の場合には、
0 が返されます。
この関数が呼び出されるとき、コールアウトが
.Va Giant
ミューテックス (mutex) によって保護されている場合には、
.Va Giant
を保持していなければなりません。
.Pp
関数
.Fn callout_drain
@ -208,14 +222,254 @@ timeout (
この関数は、そのコールアウトがブロックするかもしれないあらゆるロックを
保持している間は、決して呼び出されてはなりません。
さもないと結果としてデッドロックします。
コールアウトサブシステムが既にこのコールアウトを処理し始めたなら
コールアウト関数が
.Fn callout_drain
の実行の間に呼び出されるかもしれないことに注意してください。
しかしながら、コールアウトサブシステムは、
.Fn callout_drain
が返る前にコールアウトが完全に停止されることを保証します。
.Pp
関数
.Fn callout_reset
は最初にそのコールアウトを廃止するために
.Fn callout_stop
を呼び出し、それから新しいコールアウトを
と同様のことを実行し、それから新しいコールアウトを
.Fn timeout
と同じ流儀で確立します。
この関数が呼び出されるとき、コールアウトが
.Va Giant
ミューテックスによって保護される場合には、
.Va Giant
は保持されなければなりません。
.Pp
マクロ
.Fn callout_pending ,
.Fn callout_active
および
.Fn callout_deactivate
はコールアウトの現在の状態へのアクセスを提供します。
これらのマクロを慎重に使用すれば、非同期タイマ機構に
特有の多くの競合条件を避けることができます。
さらなる詳細については下記の
.Sx "競合条件を回避する"
を参照してださい。
.Fn callout_pending
マクロは、コールアウトが
.Em 保留中
であるかどうかチェックします。
コールアウトはタイムアウトが設定されているが時間がまだ到着していない時、
.Em 保留中
であると見なされます。
いったんタイムアウト時間が来て、コールアウトサブシステムがこのコールアウト
を処理し始めれば、
.Fn callout_pending
はたとえコールアウト関数が実行を終了して (または、始めて) いなくても
.Dv FALSE
を返すことに注意してください。
.\" even though = ~にもかかわらず、たとえ~としても、たとえ~でも
.Fn callout_active
マクロはコールアウトが
.Em アクティブ
としてマークされているかどうかチェックし、
.Fn callout_deactivate
マクロはコールアウトの
.Em アクティブ
フラグをクリアします。
コールアウトサブシステムは、タイムアウトが設定されているコールアウトを
.Em アクティブ
に設定し、
.Fn callout_stop
.Fn callout_drain
では
.Em アクティブ
をクリアしますが、
コールアウト関数の実行を通して
通常どおりコールアウトの期限が切れた場合には、クリア
.Em しません
.Ss "競合条件を回避する"
コールアウトサブシステムはそれ自体のタイマコンテキストから
コールアウト関数を呼び出します。
ある種の同期なしでは、コールアウト関数は他のスレッドからコールアウトの
停止やリセットを試みながら並行して起動される可能性があります。
特に、コールアウト関数は典型的には最初の動作として
ミューテックスを獲得するので、
コールアウト関数は既に呼び出されたとしても、
別のスレッドがコールアウトをリセットするかまたは停止しようとするまで
そのミューテックスを待ってブロックされてしまいます。
.Pp
コールアウトサブシステムはこれらの同期関係に対処するために
多くのメカニズムを提供します。
.Bl -enum -offset indent
.It
.Fa mpsafe
.Dv FALSE
に設定して
.Fn callout_init
を使用することで指定される)
.Va Giant
ミューテックスによってコールアウトが保護される場合は、
このミューテックスは競合条件を避けるために使用できます。
.Fn callout_stop
.Fn callout_reset
を呼び出す前に、
.Va Giant
ミューテックスは呼び出し側によって獲得されなければなりませんが、
コールアウトが想定したとおりに正しく停止されるかまたはリセットされる
ことが保証されます。
.\" as expected = 案の定、予想どおり(に)、想定したとおり
コールアウトかその関連のミューテックスを破壊する前に
.Fn callout_drain
を使用する必要がまだあることに注意してください。
.It
.Fn callout_stop
からのリターン値は、コールアウトが削除されたかどうかを示します。
コールアウトが設定され、
コールアウト関数がまだ実行されていないことがわかっている場合は、
.Dv FALSE
の値はコールアウト関数がまさに呼び出されようとしていることを示します。
.\" about to = 《be ~》まさに~しようとしている
例えば:
.Bd -literal -offset indent
if (sc->sc_flags & SCFLG_CALLOUT_RUNNING) {
if (callout_stop(&sc->sc_callout)) {
sc->sc_flags &= ~SCFLG_CALLOUT_RUNNING;
/* successfully stopped */
} else {
/*
* callout has expired and callout
* function is about to be executed
*/
}
}
.Ed
.Pp
.Fn callout_reset
がコールアウトを停止したかどうか決定するための
同等なメカニズムがなにもないことに注意してください。
.It
.Fn callout_pending ,
.Fn callout_active
および
.Fn callout_deactivate
マクロは競合条件を回避するために連携して使用できます。
.\" work around = 問題に取り掛かる、対処する、
コールアウトのタイムアウトが設定されるとき、コールアウトサブシステムは
ともに
.Em アクティブ
.Em 保留中
の両方でコールアウトをマークします。
タイムアウト時間に達するとき、コールアウトサブシステムは
.Em 保留中
のフラグを最初にクリアすることによってコールアウトを処理し始めます。
次に、
.Em アクティブ
フラグを変えないでコールアウト関数を呼び出して、
コールアウト関数が戻った後でさえ
.Em アクティブ
フラグをクリアしません。
ここで説明されたメカニズムでは、
コールアウト関数自体が
.Fn callout_deactivate
マクロを使用して
.Em アクティブ
フラグをクリアすることを要求します。
.Fn callout_stop
.Fn callout_drain
関数は戻る前に、
常に
.Em アクティブ
.Em 保留中
フラグの両方をクリアします。
.Pp
.Fn callout_pending
.Dv TRUE
を返す場合、
コールアウト関数は、最初に
.Em 保留中
フラグをチェックして動作なしで戻るべきです。
これは、コールアウトがコールアウト関数が呼び出される直前に
.Fn callout_reset
を使用して再スケジュールされたことを示します。
.Fn callout_active
.Dv FALSE
を返す場合、コールアウト関数は同様に動作なしで返るべきです。
これは、コールアウトが停止されたことを示します。
最後に、コールアウト関数は、
.Em アクティブ
フラグをクリアするために
.Fn callout_deactivate
を呼び出すべきです。
例えば:
.Bd -literal -offset indent
mtx_lock(&sc->sc_mtx);
if (callout_pending(&sc->sc_callout)) {
/* callout was reset */
mtx_unlock(&sc->sc_mtx);
return;
}
if (!callout_active(&sc->sc_callout)) {
/* callout was stopped */
mtx_unlock(&sc->sc_mtx);
return;
}
callout_deactivate(&sc->sc_callout);
/* rest of callout function */
.Ed
.Pp
上記で使用したミューテックスのような適切な同期をともに使うことにより、
このアプローチは
.Fn callout_stop
.Fn callout_reset
関数がいつも競合なしで使用できます。
.\" together with = ~とともに、~に加えて
例えば:
.Bd -literal -offset indent
mtx_lock(&sc->sc_mtx);
callout_stop(&sc->sc_callout);
/* The callout is effectively stopped now. */
.Ed
.Pp
コールアウトがまだ保留中である場合、これらの関数は通常どおり動作しますが、
コールアウトの処理が既に始まっている場合、
コールアウト関数におけるテストにおいて、これらの関数はさらなる
動作なしで戻ることになります。
コールアウト関数と他のコードの間の同期は、コールアウト関数が
.Fn callout_deactivate
呼び出しを終えるまでコールアウトの停止やリセットが行われないことを
確実にします。
.Pp
さらに、上記のテクニックは、
.Em アクティブ
フラグが実際にコールアウトが有効か無効かを反映することを確実にします。
.Fn callout_active
が FALSE を返した場合、たとえコールアウトサブシステムが
実際にコールアウト関数を開始しようとしていたとしても、
コールアウト関数は動作なしに終了してしまうので、
実質的に無効化されています。
.\" since even if = たとえ~でも~なので、
.\" even if = たとえ~でも
.El
.Pp
最後に、コールアウトを停止しようとしているときに
考慮しなければならない最後の競合条件が 1 つあります。
この場合、既に破壊されるかまたは再利用されたデータオブジェクトに
アクセスする必要があるかもしれないので、
コールアウト関数自体に
停止されたコールアウトを検出するさせるために安全でないかもしれません。
コールアウトが完全に終了したことを保証するためには、
.Fn callout_drain
呼び出しを使用しなければなりません。
.Sh 戻り値
.Fn timeout
関数は
@ -226,7 +480,7 @@ timeout (
.Fn callout_stop
および
.Fn callout_drain
関数は呼び出された時にコールアウトが未だ保留の場合には 0 以外を、
関数は呼び出された時にコールアウトが未だ保留の場合には 0 以外を、
そうでない場合には 0 を返します。
.Sh 歴史
現在の timeout および untimeout ルーチンは