Catch up with 5.3-BETA1 for man9.

Submitted by:   Akira Ikeuchi <a_ikeuchi@mic.mitsumi.co.jp>
Reviewed by:    Watanabe Kazuhiro <CQG00620@nifty.ne.jp>
This commit is contained in:
SUZUKI Koichi 2004-09-21 21:00:59 +00:00
parent 8b82a57931
commit d100276457
Notes: svn2git 2020-12-08 03:00:23 +00:00
svn path=/head/; revision=22425
45 changed files with 362 additions and 204 deletions

View file

@ -23,7 +23,7 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE. .\" SUCH DAMAGE.
.\" .\"
.\" %FreeBSD: src/share/man/man9/BUS_CONFIG_INTR.9,v 1.2 2003/10/23 06:22:40 hmp Exp % .\" %FreeBSD: src/share/man/man9/BUS_CONFIG_INTR.9,v 1.4 2004/07/07 07:56:58 ru Exp %
.\" .\"
.\" $FreeBSD$ .\" $FreeBSD$
.Dd September 23, 2003 .Dd September 23, 2003
@ -32,29 +32,31 @@
.\" .\"
.Sh 名称 .Sh 名称
.Nm BUS_CONFIG_INTR .Nm BUS_CONFIG_INTR
.Nd 割り込みの極性およびトリガモードの設定 .Nd "割り込みの極性およびトリガモードの設定"
.\" .\"
.Sh 書式 .Sh 書式
.In sys/param.h .In sys/param.h
.In sys/bus.h .In sys/bus.h
.Ft int .Ft int
.Fn BUS_CONFIG_INTR "device_t dev" "int irq" "enum intr_trigger trig" "enum intr_polarity pol" .Fo BUS_CONFIG_INTR
.Fa "device_t dev" "int irq" "enum intr_trigger trig" "enum intr_polarity pol"
.Fc
.\" .\"
.Sh 解説 .Sh 解説
.Nm .Fn BUS_CONFIG_INTR
メソッドは、バスまたはデバイスのドライバが、親のバスに割り込み極性および メソッドは、バスまたはデバイスのドライバが、親のバスに割り込み極性および
トリガモードを提供することを可能にします。 トリガモードを提供することを可能にします。
これは通常は、ルートバス (例えば nexus) までの全ての経路を上がって行きます。 これは通常は、ルートバス (例えば nexus) までの全ての経路を上がって行きます。
その全ての経路において、 その全ての経路において、
実際にハードウェアをプログラムするために必要な動作がなされます。 実際にハードウェアをプログラムするために必要な動作がなされます。
.Nm .Fn BUS_CONFIG_INTR
メソッドは割り込み番号をとるため、 メソッドは割り込み番号をとるため、
.Xr BUS_SETUP_INTR 9 .Xr BUS_SETUP_INTR 9
より先に呼び出されることが必ずしも要求されませんが、当然だと仮定されます。 より先に呼び出されることが必ずしも要求されませんが、当然だと仮定されます。
.Pp .Pp
.Fa trig .Fa trig
引数は以下のいずれかです。 引数は以下のいずれかです。
.Bl -tag -width INTR_TRIGGER_CONFORM .Bl -tag -width ".Dv INTR_TRIGGER_CONFORM"
.It Dv INTR_TRIGGER_CONFORM .It Dv INTR_TRIGGER_CONFORM
割り込みトリガモードは、デバイスがアタッチされているバスにとっての標準です。 割り込みトリガモードは、デバイスがアタッチされているバスにとっての標準です。
.It Dv INTR_TRIGGER_EDGE .It Dv INTR_TRIGGER_EDGE
@ -71,7 +73,7 @@
.Pp .Pp
.Fa pol .Fa pol
引数は以下のいずれかです。 引数は以下のいずれかです。
.Bl -tag -width INTR_POLARITY_CONFORM .Bl -tag -width ".Dv INTR_POLARITY_CONFORM"
.It Dv INTR_POLARITY_CONFORM .It Dv INTR_POLARITY_CONFORM
割り込みの極性は、デバイスがアタッチされているバスにとっての標準です。 割り込みの極性は、デバイスがアタッチされているバスにとっての標準です。
.It Dv INTR_POLARITY_HIGH .It Dv INTR_POLARITY_HIGH
@ -90,7 +92,7 @@
.Xr driver 9 .Xr driver 9
.\" .\"
.Sh 歴史 .Sh 歴史
.Nm .Fn BUS_CONFIG_INTR
メソッドは メソッドは
.Fx 5.2 .Fx 5.2
ではじめて登場しました。 ではじめて登場しました。

View file

@ -26,7 +26,7 @@
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\" .\"
.\" %FreeBSD: src/share/man/man9/DEVICE_DETACH.9,v 1.10 2003/10/23 01:31:25 hmp Exp % .\" %FreeBSD: src/share/man/man9/DEVICE_DETACH.9,v 1.11 2004/07/03 18:29:23 ru Exp %
.\" .\"
.\" $FreeBSD$ .\" $FreeBSD$
.Dd June 16, 1998 .Dd June 16, 1998
@ -42,15 +42,15 @@
.Fn DEVICE_DETACH "device_t dev" .Fn DEVICE_DETACH "device_t dev"
.Sh 解説 .Sh 解説
デバイスをデタッチします。 デバイスをデタッチします。
ユーザがドライバソフトウェアを置き換えた場合、またはデバイスが ユーザがドライバソフトウェアを置き換えた場合、またはデバイスがシステムから
システムから物理的に切り離されようとしている場合(たとえば pccard デバイス)に、 物理的に切り離されようとしている場合 (たとえば pccard デバイス) に、
呼び出されることができます。 呼び出されることができます。
.Pp .Pp
このメソッドは このメソッドは
.Xr DEVICE_ATTACH 9 .Xr DEVICE_ATTACH 9
メソッドで割り当てられたあらゆるシステムリソースを解放し、 メソッドで割り当てられたあらゆるシステムリソースを解放し、
ハードウェアを健全な状態に ハードウェアを健全な状態に
リセットする (つまり割り込みを無効にするなど) べきです。 リセットする (すなわち割り込みを無効にするなど) べきです。
.Sh 戻り値 .Sh 戻り値
成功時には 0 が返され、それ以外の場合は適切なエラーが返されます。 成功時には 0 が返され、それ以外の場合は適切なエラーが返されます。
.Sh 関連項目 .Sh 関連項目

View file

@ -26,9 +26,9 @@
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\" .\"
.\" %FreeBSD: src/share/man/man9/DEVICE_IDENTIFY.9,v 1.12 2004/07/03 18:29:23 ru Exp %
.\" $FreeBSD$ .\" $FreeBSD$
.\" $FreeBSD$ .Dd May 13, 2004
.Dd March 10, 2001
.Dt DEVICE_IDENTIFY 9 .Dt DEVICE_IDENTIFY 9
.Os .Os
.Sh 名称 .Sh 名称
@ -57,14 +57,14 @@
を呼び出すことによってカーネルに登録されます。 を呼び出すことによってカーネルに登録されます。
.Pp .Pp
デバイスツリーおよびデバイスドライバツリーが解体されるため、 デバイスツリーおよびデバイスドライバツリーが解体されるため、
.Nm .Fn DEVICE_IDENTIFY
ルーチンはこれを考慮に入れる必要があります。 ルーチンはこれを考慮に入れる必要があります。
識別ルーチンを持っているデバイスドライバをロードおよびアンロードする場合には、 識別ルーチンを持っているデバイスドライバをロードおよびアンロードする場合には、
この可能性を排除するための特別の手段がとられない限りは、
その子ノードは同じノードを何度も追加する能力を持っています。 その子ノードは同じノードを何度も追加する能力を持っています。
.Sh 使用例 .Sh 使用例
以下の疑似コードは、ハードウェアの一部をプローブし、デバイスと 以下の疑似コードは、ハードウェアの一部をプローブし、デバイスと
そのリソース (I/O ポート) をカーネルに登録する関数の例を示しています。 そのリソース (I/O ポート) をカーネルに登録する関数の例を示しています。
デバイスの解説も設定しています。
.Bd -literal .Bd -literal
void void
foo_identify(driver_t *driver, device_t parent) foo_identify(driver_t *driver, device_t parent)
@ -72,10 +72,9 @@ foo_identify(driver_t *driver, device_t parent)
device_t child; device_t child;
デバイス情報の取り出し; デバイス情報の取り出し;
if (サポートするデバイスうちの 1 つがマッチする) { if (サポートするデバイスうちの 1 つがマッチする &&
デバイスツリーに未だ存在しない) {
child = BUS_ADD_CHILD(parent, 0, "foo", -1); child = BUS_ADD_CHILD(parent, 0, "foo", -1);
device_set_desc_copy(child, "foo chip ver.123");
device_set_driver(child, driver);
bus_set_resource(child, SYS_RES_IOPORT, 0, FOO_IOADDR, 1); bus_set_resource(child, SYS_RES_IOPORT, 0, FOO_IOADDR, 1);
} }
} }
@ -88,8 +87,6 @@ foo_identify(driver_t *driver, device_t parent)
.Xr DEVICE_ATTACH 9 , .Xr DEVICE_ATTACH 9 ,
.Xr DEVICE_DETACH 9 , .Xr DEVICE_DETACH 9 ,
.Xr DEVICE_PROBE 9 , .Xr DEVICE_PROBE 9 ,
.Xr device_set_desc_copy 9 ,
.Xr device_set_driver 9 ,
.Xr DEVICE_SHUTDOWN 9 .Xr DEVICE_SHUTDOWN 9
.Sh 作者 .Sh 作者
このマニュアルページは このマニュアルページは

View file

@ -26,7 +26,7 @@
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\" .\"
.\" %FreeBSD: src/share/man/man9/DEVICE_PROBE.9,v 1.17 2004/04/11 06:37:21 imp Exp % .\" %FreeBSD: src/share/man/man9/DEVICE_PROBE.9,v 1.19 2004/08/11 21:52:31 imp Exp %
.\" .\"
.\" $FreeBSD$ .\" $FreeBSD$
.Dd June 16, 1998 .Dd June 16, 1998
@ -72,11 +72,13 @@
成功値 0 を返す場合には、 成功値 0 を返す場合には、
ドライバはそのデバイスがアタッチされるであろうと想定することはできますが、 ドライバはそのデバイスがアタッチされるであろうと想定することはできますが、
プローブルーチンが戻った時にいかなるリソースをも保持してはなりません。 プローブルーチンが戻った時にいかなるリソースをも保持してはなりません。
成功コード 0 を返すときには、
ドライバは softc は保存されていると決めてかかることができます。
.Sh 戻り値 .Sh 戻り値
0 以下の値は成功を表し、0 より大きな値はエラー (errno) を表します。 0 以下の値は成功を表し、0 より大きな値はエラー (errno) を表します。
0 以下の値の時、0 は最高の優先順位を表し、それ以上のプローブは行ないません。 0 以下の値の時、0 は最高の優先順位を表し、それ以上のプローブは行ないません。
0 未満の値は、低い値程、低い優先順位を表します。 0 未満の値は、低い値程、低い優先順位を表します。
たとえば-100 は -50 よりも低い優先順位を表します。 たとえば -100 は -50 よりも低い優先順位を表します。
.Sh 関連項目 .Sh 関連項目
.Xr device 9 , .Xr device 9 ,
.Xr DEVICE_ATTACH 9 , .Xr DEVICE_ATTACH 9 ,

View file

@ -28,7 +28,7 @@
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\" .\"
.\" %FreeBSD: src/share/man/man9/MD5.9,v 1.9 2003/10/23 01:31:25 hmp Exp % .\" %FreeBSD: src/share/man/man9/MD5.9,v 1.10 2004/07/03 18:29:23 ru Exp %
.\" .\"
.\" $FreeBSD$ .\" $FreeBSD$
.Dd April 17, 1996 .Dd April 17, 1996
@ -48,7 +48,7 @@
.Fn MD5Transform "u_int32_t buf[4]" "const unsigned char block[64]" .Fn MD5Transform "u_int32_t buf[4]" "const unsigned char block[64]"
.Sh 解説 .Sh 解説
.Nm .Nm
モジュールは、RSA Data Security, Inc. の MD5 メッセージダイジェスト モジュールは、RSA Data Security, Inc.\& の MD5 メッセージダイジェスト
アルゴリズム(MD5)を実装しています。 アルゴリズム(MD5)を実装しています。
これはデータの 128 ビットの MD5 ダイジェストを生成します。 これはデータの 128 ビットの MD5 ダイジェストを生成します。
.Pp .Pp

View file

@ -26,7 +26,7 @@
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\" .\"
.\" %FreeBSD: src/share/man/man9/VFS_ROOT.9,v 1.9 2003/10/23 06:24:55 hmp Exp % .\" %FreeBSD: src/share/man/man9/VFS_ROOT.9,v 1.10 2004/07/12 09:06:51 alfred Exp %
.\" .\"
.\" $FreeBSD$ .\" $FreeBSD$
.Dd July 24, 1996 .Dd July 24, 1996
@ -40,7 +40,7 @@
.In sys/mount.h .In sys/mount.h
.In sys/vnode.h .In sys/vnode.h
.Ft int .Ft int
.Fn VFS_ROOT "struct mount *mp" "struct vnode **vpp" .Fn VFS_ROOT "struct mount *mp" "struct vnode **vpp" "struct thread *td"
.Sh 解説 .Sh 解説
ファイルシステムのルートディレクトリに対する、ロックされた vnode を返します。 ファイルシステムのルートディレクトリに対する、ロックされた vnode を返します。
.Pp .Pp
@ -50,6 +50,8 @@
ファイルシステム。 ファイルシステム。
.It Fa vpp .It Fa vpp
ルート vnode の引数の戻り値。 ルート vnode の引数の戻り値。
.It Fa td
呼び出し側のスレッド。
.El .El
.Sh 関連項目 .Sh 関連項目
.Xr VFS 9 , .Xr VFS 9 ,

View file

@ -26,7 +26,7 @@
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\" .\"
.\" %FreeBSD: src/share/man/man9/VOP_CREATE.9,v 1.14 2003/10/23 02:11:14 hmp Exp % .\" %FreeBSD: src/share/man/man9/VOP_CREATE.9,v 1.15 2004/07/08 00:08:18 alfred Exp %
.\" .\"
.\" $FreeBSD$ .\" $FreeBSD$
.Dd July 24, 1996 .Dd July 24, 1996
@ -72,21 +72,6 @@
これらのエントリポイントは、オブジェクトの生成中に これらのエントリポイントは、オブジェクトの生成中に
.Xr VOP_LOOKUP 9 .Xr VOP_LOOKUP 9
の後に呼び出されます。 の後に呼び出されます。
通常、
.Xr VOP_LOOKUP 9
.Dv SAVENAME
フラグを
.Fa cnp->cn_flags
中に設定して、
.Fa cnp->cn_pnbuf
で指されるメモリを正当なままに保ちます。
ファイルの作成時にエラーが検出された場合には、このメモリは解放されます。
ファイルがうまく作成された場合には、
.Fa cnp
.Dv SAVESTART
フラグが指定されていなければ、解放されます。
.Sh ロック .Sh ロック
ディレクトリ ディレクトリ
.Fa dvp .Fa dvp
@ -114,11 +99,8 @@ vop_create(struct vnode *dvp,
mode |= IFREG; mode |= IFREG;
error = SOMEFS_VALLOC(dvp, mode, cnp->cn_cred, &vp); error = SOMEFS_VALLOC(dvp, mode, cnp->cn_cred, &vp);
if (error) { if (error)
free(cnp->cn_pnbuf, M_NAMEI);
vput(dvp);
return error; return error;
}
/* /*
* 新しい vnode のパーミッションを更新します。 * 新しい vnode のパーミッションを更新します。
@ -142,9 +124,6 @@ vop_create(struct vnode *dvp,
if (error) if (error)
goto bad; goto bad;
if ((cnp->cn_flags & SAVESTART) == 0)
free(cnp->cn_pnbuf, M_NAMEI);
vput(dvp);
*vpp = vp; *vpp = vp;
return 0; return 0;
@ -154,7 +133,6 @@ bad:
* inode またはディレクトリの更新の試みで書き込みエラーが * inode またはディレクトリの更新の試みで書き込みエラーが
* 発生したため inode の割り当てを解放しなければなりません。 * 発生したため inode の割り当てを解放しなければなりません。
*/ */
free(cnp->cn_pnbuf, M_NAMEI);
vput(vp); vput(vp);
/* /*
@ -162,8 +140,6 @@ bad:
*/ */
...; ...;
vput(dvp);
return error; return error;
} }
.Ed .Ed

View file

@ -27,7 +27,7 @@
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\" .\"
.\" %FreeBSD: src/share/man/man9/VOP_GETPAGES.9,v 1.9 2003/10/23 02:11:14 hmp Exp % .\" %FreeBSD: src/share/man/man9/VOP_GETPAGES.9,v 1.10 2004/06/16 08:33:57 ru Exp %
.\" .\"
.\" $FreeBSD$ .\" $FreeBSD$
.Dd September 27, 2003 .Dd September 27, 2003

View file

@ -26,7 +26,7 @@
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\" .\"
.\" %FreeBSD: src/share/man/man9/VOP_LINK.9,v 1.20 2003/05/31 14:07:25 hmp Exp % .\" %FreeBSD: src/share/man/man9/VOP_LINK.9,v 1.21 2004/07/04 20:55:49 ru Exp %
.\" .\"
.\" $FreeBSD$ .\" $FreeBSD$
.Dd July 24, 1996 .Dd July 24, 1996
@ -109,8 +109,8 @@ vop_link(struct vnode *dvp, struct vnode *vp, struct componentname *cnp)
異なるファイルシステム間ではハードリンクは利用できません。 異なるファイルシステム間ではハードリンクは利用できません。
.El .El
.Sh 関連項目 .Sh 関連項目
.Xr vnode 9 , .Xr vn_lock 9 ,
.Xr vn_lock 9 .Xr vnode 9
.Sh 作者 .Sh 作者
このマニュアルページは このマニュアルページは
.An Doug Rabson .An Doug Rabson

View file

@ -26,7 +26,7 @@
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\" .\"
.\" %FreeBSD: src/share/man/man9/VOP_LOOKUP.9,v 1.19 2003/05/31 14:07:25 hmp Exp % .\" %FreeBSD: src/share/man/man9/VOP_LOOKUP.9,v 1.21 2004/07/08 00:36:58 alfred Exp %
.\" .\"
.\" $FreeBSD$ .\" $FreeBSD$
.Dd November 24, 1997 .Dd November 24, 1997
@ -63,7 +63,7 @@ struct componentname {
*/ */
u_long cn_nameiop; /* namei 操作 */ u_long cn_nameiop; /* namei 操作 */
u_long cn_flags; /* namei へのフラグ */ u_long cn_flags; /* namei へのフラグ */
struct proc *cn_proc; /* lookup を要求しているプロセス */ struct thread *cn_proc; /* lookup を要求しているスレッド */
struct ucred *cn_cred; /* 証明 */ struct ucred *cn_cred; /* 証明 */
/* /*
* 検索ルーチンおよびコミットルーチンで共有されます。 * 検索ルーチンおよびコミットルーチンで共有されます。
@ -107,7 +107,8 @@ notfound:
.Bd -ragged -offset indent .Bd -ragged -offset indent
作成または名前変更でパス名の最後の場合には、 作成または名前変更でパス名の最後の場合には、
.Er EJUSTRETURN .Er EJUSTRETURN
を返し、利用可能な位置に情報を残します。そうでなければ を返し、利用可能な位置に情報を残します。
そうでなければ
.Er ENOENT .Er ENOENT
を返します。 を返します。
.Ed .Ed
@ -174,7 +175,7 @@ vop_lookup(struct vnode *dvp,
if (dvp->v_type != VDIR) if (dvp->v_type != VDIR)
return ENOTDIR; return ENOTDIR;
error = VOP_ACCESS(dvp, VEXEC, cred, cnp->cn_proc); error = VOP_ACCESS(dvp, VEXEC, cred, cnp->cn_thread);
if (error) if (error)
return (error); return (error);
@ -225,7 +226,7 @@ vop_lookup(struct vnode *dvp,
if (vpid == vp->v_id) { if (vpid == vp->v_id) {
/* /*
* lockparent && islastcn の場合には dvp がロック * lockparent && islastcn の場合には dvp がロック
* されます。vp がロックされます。 * されます。 vp がロックされます。
*/ */
return (0); return (0);
} }
@ -261,7 +262,7 @@ vop_lookup(struct vnode *dvp,
/* /*
* できる限り、ディレクトリの中の新しい要素の名前のために * できる限り、ディレクトリの中の新しい要素の名前のために
* 十分に大きい場所の位置を記録します。これは dvp のための * 十分に大きい場所の位置を記録します。 これは dvp のための
* vnode の私的データの中に記録されることが可能です。 * vnode の私的データの中に記録されることが可能です。
* VOP_CREATE または VOP_RENAME で後で使用するために、 * VOP_CREATE または VOP_RENAME で後で使用するために、
* パス名に保持するために SAVENAME フラグを設定します。 * パス名に保持するために SAVENAME フラグを設定します。
@ -287,7 +288,7 @@ vop_lookup(struct vnode *dvp,
} else { } else {
/* /*
* 削除でパス名の最後の場合には、ファイルの削除に使用できる * 削除でパス名の最後の場合には、ファイルの削除に使用できる
* パラメータを返します。wantparent フラグが設定されていない * パラメータを返します。 wantparent フラグが設定されていない
* 場合にはそのディレクトリのみを返し、そうでない場合には * 場合にはそのディレクトリのみを返し、そうでない場合には
* 続けてその inode をロックし、"." に注意します。 * 続けてその inode をロックし、"." に注意します。
*/ */
@ -295,7 +296,7 @@ vop_lookup(struct vnode *dvp,
/* /*
* ディレクトリの書込み権をチェックします。 * ディレクトリの書込み権をチェックします。
*/ */
error = VOP_ACCESS(dvp, VWRITE, cred, cnp->cn_proc); error = VOP_ACCESS(dvp, VWRITE, cred, cnp->cn_thread);
if (error) if (error)
return (error); return (error);
@ -330,7 +331,7 @@ vop_lookup(struct vnode *dvp,
* ディレクトリエントリの inode を取得しなければなりません。 * ディレクトリエントリの inode を取得しなければなりません。
*/ */
if (nameiop == RENAME && wantparent && islastcn) { if (nameiop == RENAME && wantparent && islastcn) {
error = VOP_ACCESS(dvp, VWRITE, cred, cnp->cn_proc); error = VOP_ACCESS(dvp, VWRITE, cred, cnp->cn_thread);
if (error) if (error)
return (error); return (error);
@ -355,21 +356,21 @@ vop_lookup(struct vnode *dvp,
} }
/* /*
* 名前の変換のステップの全容です。シンボリックリンクが現在の * 名前の変換のステップの全容です。 シンボリックリンクが現在の
* ディレクトリからの相対である場合には、再度必要になるので、 * ディレクトリからの相対である場合には、再度必要になるので、
* ディレクトリを 'vput' しません。代わりに "pdp" として * ディレクトリを 'vput' しません。 代わりに "pdp" として
* アンロックされたディレクトリを保存します。取得する前にその * アンロックされたディレクトリを保存します。 取得する前にその
* inode が削除されないことを保証するために、そのディレクトリを * inode が削除されないことを保証するために、そのディレクトリを
* アンロックする前に目的の inode を取得しなければなりません。 * アンロックする前に目的の inode を取得しなければなりません。
* ルートからディレクトリツリーを下る方向で inode を取得する * ルートからディレクトリツリーを下る方向で inode を取得する
* ことで、デッドロックを常に予防します。従がって、逆向きの * ことで、デッドロックを常に予防します。 従がって、逆向きの
* ポインタ ".." を辿るときには、要求されたディレクトリを取得する * ポインタ ".." を辿るときには、要求されたディレクトリを取得する
* 前に親ディレクトリをアンロックしなければなりません。".." に * 前に親ディレクトリをアンロックしなければなりません。 ".." に
* 関連付けられた inode のための VFS_VGET が戻る前に、現在の * 関連付けられた inode のための VFS_VGET が戻る前に、現在の
* および親ディレクトリの両方が削除された場合には、ここに潜在的な * および親ディレクトリの両方が削除された場合には、ここに潜在的な
* 競合状態があります。きわめて複雑なデッドロック検出アルゴリズム * 競合状態があります。 きわめて複雑なデッドロック検出アルゴリズム
* の実装なしにこの競合状態を避けることができないので、この * の実装なしにこの競合状態を避けることができないので、この
* 競合状態の発生が稀であることを期待しています。ファイルシステムが、 * 競合状態の発生が稀であることを期待しています。 ファイルシステムが、
* ".." 以外に、ディレクトリ構造の中に遡りを指すハードリンクを * ".." 以外に、ディレクトリ構造の中に遡りを指すハードリンクを
* 持つ場合、この簡単なデッドロック検出機構が働かないことにも注意 * 持つ場合、この簡単なデッドロック検出機構が働かないことにも注意
* してください。 * してください。

View file

@ -26,7 +26,7 @@
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\" .\"
.\" %FreeBSD: src/share/man/man9/VOP_OPENCLOSE.9,v 1.13 2003/10/23 02:11:14 hmp Exp % .\" %FreeBSD: src/share/man/man9/VOP_OPENCLOSE.9,v 1.15 2004/05/11 14:13:52 hmp Exp %
.\" .\"
.\" $FreeBSD$ .\" $FreeBSD$
.Dd July 24, 1996 .Dd July 24, 1996
@ -40,7 +40,7 @@
.In sys/param.h .In sys/param.h
.In sys/vnode.h .In sys/vnode.h
.Ft int .Ft int
.Fn VOP_OPEN "struct vnode *vp" "int mode" "struct ucred *cred" "struct thread *td" .Fn VOP_OPEN "struct vnode *vp" "int mode" "struct ucred *cred" "struct thread *td" "int fdidx"
.Ft int .Ft int
.Fn VOP_CLOSE "struct vnode *vp" "int mode" "struct ucred *cred" "struct thread *td" .Fn VOP_CLOSE "struct vnode *vp" "int mode" "struct ucred *cred" "struct thread *td"
.Sh 解説 .Sh 解説
@ -61,6 +61,15 @@
ファイルにアクセスしているスレッド。 ファイルにアクセスしているスレッド。
.El .El
.Pp .Pp
加えて、
.Fn VOP_OPEN
.Fa fdidx
の中のファイル記述子番号を受け入れることが可能です。
これは例えば
.Xr fdesc 5
のような情報を要求するファイルシステムで有用です。
.Pp
アクセスモードは、 アクセスモードは、
.Dv FREAD , .Dv FREAD ,
.Dv FWRITE , .Dv FWRITE ,
@ -80,6 +89,14 @@ vnode
.Fa vn_close .Fa vn_close
は、ロックされていない参照された vnode を期待し、 は、ロックされていない参照された vnode を期待し、
戻る前に参照を手繰ることに注意してください。 戻る前に参照を手繰ることに注意してください。
.Sh 実装に関する注
.Fn VOP_OPEN
への
.Fa fdidx
引数は現在使用されておらず、当面は
.Ql \-1
を使用します。
しかしながら、これは将来変更されます。
.Sh 戻り値 .Sh 戻り値
成功時には 0 が返され、そうでない場合にはエラーコードが返されます。 成功時には 0 が返され、そうでない場合にはエラーコードが返されます。
.Sh 疑似コード .Sh 疑似コード

View file

@ -26,7 +26,7 @@
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\" .\"
.\" %FreeBSD: src/share/man/man9/VOP_RDWR.9,v 1.15 2003/10/23 02:11:14 hmp Exp % .\" %FreeBSD: src/share/man/man9/VOP_RDWR.9,v 1.17 2004/07/08 00:43:50 alfred Exp %
.\" .\"
.\" $FreeBSD$ .\" $FreeBSD$
.Dd July 24, 1996 .Dd July 24, 1996
@ -142,7 +142,7 @@ vop_read(struct vnode *vp, struct uio *uio, int ioflag, struct ucred *cred)
if (bp != NULL) if (bp != NULL)
bqrelse(bp); bqrelse(bp);
return error; return (error);
} }
int int
@ -207,7 +207,8 @@ vop_write(struct vnode *vp, struct uio *uio, int ioflag, struct ucred *cred)
if (error) { if (error) {
if (ioflag & IO_UNIT) { if (ioflag & IO_UNIT) {
VOP_TRUNCATE(vp, osize, ioflag & IO_SYNC, cred, uio->uio_procp); /* ファイルを切り詰める私的なルーチンを呼び出す。 */
your_truncate(vp, osize, ioflag & IO_SYNC, cred, uio->uio_td);
uio->uio_offset -= resid - uio->uio_resid; uio->uio_offset -= resid - uio->uio_resid;
uio->uio_resid = resid; uio->uio_resid = resid;
} }
@ -216,7 +217,7 @@ vop_write(struct vnode *vp, struct uio *uio, int ioflag, struct ucred *cred)
error = VOP_UPDATE(vp, &tv, &tv, 1); /* XXX これは何をしているの? */ error = VOP_UPDATE(vp, &tv, &tv, 1); /* XXX これは何をしているの? */
} }
return error; return (error);
} }
.Ed .Ed
.Sh エラー .Sh エラー

View file

@ -26,7 +26,7 @@
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\" .\"
.\" %FreeBSD: src/share/man/man9/VOP_RENAME.9,v 1.19 2003/10/23 03:52:07 hmp Exp % .\" %FreeBSD: src/share/man/man9/VOP_RENAME.9,v 1.20 2004/07/08 00:38:28 alfred Exp %
.\" .\"
.\" $FreeBSD$ .\" $FreeBSD$
.Dd July 24, 1996 .Dd July 24, 1996
@ -172,7 +172,7 @@ vop_rename(struct vnode *fdvp, struct vnode *fvp, struct componentname *fcnp,
* 変更元で ".." を変更できるように書込みパーミッションを持って * 変更元で ".." を変更できるように書込みパーミッションを持って
* いなければなりません。 * いなければなりません。
*/ */
error = VOP_ACCESS(fvp, VWRITE, tcnp->cn_cred, tcnp->cn_proc); error = VOP_ACCESS(fvp, VWRITE, tcnp->cn_cred, tcnp->cn_thread);
VOP_UNLOCK(fvp); VOP_UNLOCK(fvp);
if (doingdirectory && fdvp != tdvp) { if (doingdirectory && fdvp != tdvp) {
/* /*

View file

@ -23,7 +23,7 @@
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\" .\"
.\" %FreeBSD: src/share/man/man9/accept_filter.9,v 1.12 2003/10/23 14:32:23 hmp Exp % .\" %FreeBSD: src/share/man/man9/accept_filter.9,v 1.13 2004/06/16 08:33:57 ru Exp %
.\" $FreeBSD$ .\" $FreeBSD$
.\" " .\" "
.Dd June 25, 2000 .Dd June 25, 2000
@ -62,7 +62,7 @@ accept
システムコールを介して要求されます。 システムコールを介して要求されます。
.Sh 実装に関する注 .Sh 実装に関する注
accept フィルタになりたいモジュールは、システムに accept フィルタになりたいモジュールは、システムに
.Vt struct accept_filter .Vt "struct accept_filter"
構造体を提供しなければなりません。 構造体を提供しなければなりません。
.Bd -literal .Bd -literal
struct accept_filter { struct accept_filter {
@ -75,29 +75,29 @@ struct accept_filter {
.Ed .Ed
.Pp .Pp
そのモジュールは、 そのモジュールは、
.Fn malloc .Xr malloc 9
で割当てられた で割当てられた
.Fa struct accept_filter .Vt "struct accept_filter"
構造体へのポインタを渡す関数 構造体へのポインタを渡す関数
.Fn accept_filt_add .Fn accept_filt_add
を使用して、それを登録するべきです。 を使用して、それを登録するべきです。
.Pp .Pp
.Vt struct accept_filter .Vt "struct accept_filter"
のフィールドは以下の通りです。 のフィールドは以下の通りです。
.Bl -tag -width accf_callbackXXX .Bl -tag -width ".Va accf_callback"
.It Vt accf_name .It Va accf_name
フィルタの名前です。 フィルタの名前です。
これはユーザ領域からアクセスされる方法です。 これはユーザ領域からアクセスされる方法です。
.It Fn accf_callback .It Va accf_callback
接続が確立されたときにカーネルが実行するコールバックです。 接続が確立されたときにカーネルが実行するコールバックです。
これは socket upcall と同等で、そのコールバックがソケットのフラグを これは socket upcall と同等で、そのコールバックがソケットのフラグを
変更しない限りは、接続が確立したとき、 変更しない限りは、接続が確立したとき、
またソケットに新しいデータが届くたびに、呼出されます。 またソケットに新しいデータが届くたびに、呼出されます。
.It Fn accf_create .It Va accf_create
監視しているソケット上に 監視しているソケット上に
.Xr setsockopt 2 .Xr setsockopt 2
がフィルタをインストールするたびに呼出されます。 がフィルタをインストールするたびに呼出されます。
.It Fn accf_destroy .It Va accf_destroy
ユーザがそのソケット上の accept フィルタを取り除くたびに呼出されます。 ユーザがそのソケット上の accept フィルタを取り除くたびに呼出されます。
.El .El
.Pp .Pp
@ -111,7 +111,7 @@ struct accept_filter {
.Pp .Pp
.Fn accept_filt_get .Fn accept_filt_get
関数は 関数は
.Fn setsockopt .Xr setsockopt 2
システムコールを介して使用されるための accept フィルタを システムコールを介して使用されるための accept フィルタを
見つけるために内部で使用されます。 見つけるために内部で使用されます。
.Pp .Pp
@ -141,7 +141,7 @@ accept
.An Jeroen Ruigrok van der Werven .An Jeroen Ruigrok van der Werven
が書きました。 が書きました。
.Pp .Pp
accept フィルタの構想は Yahoo! の accept フィルタの構想は Yahoo!\&
.An David Filo .An David Filo
によって開拓され、 によって開拓され、
.An Alfred Perlstein .An Alfred Perlstein

View file

@ -32,7 +32,7 @@
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\" .\"
.\" %FreeBSD: src/share/man/man9/boot.9,v 1.9 2003/10/23 01:14:18 hmp Exp % .\" %FreeBSD: src/share/man/man9/boot.9,v 1.10 2004/07/03 18:29:23 ru Exp %
.\" .\"
.\" $FreeBSD$ .\" $FreeBSD$
.Dd February 14, 1997 .Dd February 14, 1997
@ -74,7 +74,7 @@
.It .It
割り込みを無効にします。 割り込みを無効にします。
.It .It
クラッシュの後の再起動の場合 (例えば、 クラッシュの後の再起動の場合 (すなわち
.Fa howto .Fa howto
.Dv RB_DUMP .Dv RB_DUMP

View file

@ -29,7 +29,7 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE. .\" SUCH DAMAGE.
.\" .\"
.\" %FreeBSD: src/share/man/man9/buf.9,v 1.13 2003/10/23 02:22:07 hmp Exp % .\" %FreeBSD: src/share/man/man9/buf.9,v 1.16 2004/07/03 18:29:23 ru Exp %
.\" $FreeBSD$ .\" $FreeBSD$
.\" .\"
.Dd December 22, 1998 .Dd December 22, 1998
@ -126,7 +126,7 @@ VM
ダーティであると目印を付けられ、そのバッファは正当/ダーティの状態情報を ダーティであると目印を付けられ、そのバッファは正当/ダーティの状態情報を
失うことなく、完全に解放されることが可能です。 失うことなく、完全に解放されることが可能です。
(XXX この状況に配慮して、その他のフラグをチェックしなければならない (XXX この状況に配慮して、その他のフラグをチェックしなければならない
のでしょうか ???) のでしょうか ???)
.Pp .Pp
カーネルは VM バッファのデータマップを保持するために、その KVM 空間の カーネルは VM バッファのデータマップを保持するために、その KVM 空間の
一部を予約します。 一部を予約します。

View file

@ -26,7 +26,7 @@
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\" .\"
.\" %FreeBSD: src/share/man/man9/bus_alloc_resource.9,v 1.18 2004/03/17 17:40:34 njl Exp % .\" %FreeBSD: src/share/man/man9/bus_alloc_resource.9,v 1.19 2004/06/16 08:33:57 ru Exp %
.\" .\"
.\" $FreeBSD$ .\" $FreeBSD$
.Dd May 18, 2000 .Dd May 18, 2000

View file

@ -26,7 +26,7 @@
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\" .\"
.\" %FreeBSD: src/share/man/man9/bus_child_present.9,v 1.2 2003/05/30 21:13:32 ru Exp % .\" %FreeBSD: src/share/man/man9/bus_child_present.9,v 1.3 2004/06/21 14:11:45 mpp Exp %
.\" .\"
.\" $FreeBSD$ .\" $FreeBSD$
.Dd March 27, 2003 .Dd March 27, 2003

View file

@ -26,7 +26,7 @@
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\" .\"
.\" %FreeBSD: src/share/man/man9/bus_release_resource.9,v 1.8 2001/10/01 16:09:24 ru Exp % .\" %FreeBSD: src/share/man/man9/bus_release_resource.9,v 1.9 2004/07/03 18:29:23 ru Exp %
.\" .\"
.\" $FreeBSD$ .\" $FreeBSD$
.Dd May 18, 2000 .Dd May 18, 2000

View file

@ -25,7 +25,7 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE. .\" SUCH DAMAGE.
.\" .\"
.\" %FreeBSD: src/share/man/man9/cd.9,v 1.20 2003/10/23 05:34:13 hmp Exp % .\" %FreeBSD: src/share/man/man9/cd.9,v 1.22 2004/06/16 08:33:57 ru Exp %
.\" .\"
.\" $FreeBSD$ .\" $FreeBSD$
.Dd September 2, 2003 .Dd September 2, 2003

View file

@ -24,7 +24,7 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
.\" DAMAGE. .\" DAMAGE.
.\" .\"
.\" %FreeBSD: src/share/man/man9/condvar.9,v 1.9 2004/03/10 15:57:25 jhb Exp % .\" %FreeBSD: src/share/man/man9/condvar.9,v 1.10 2004/06/21 14:11:45 mpp Exp %
.\" .\"
.\" $FreeBSD$ .\" $FreeBSD$
.Dd December 11, 2000 .Dd December 11, 2000

View file

@ -32,7 +32,7 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE. .\" SUCH DAMAGE.
.\" .\"
.\" %FreeBSD: src/share/man/man9/copy.9,v 1.14 2004/03/29 19:42:21 hmp Exp % .\" %FreeBSD: src/share/man/man9/copy.9,v 1.15 2004/06/16 08:33:57 ru Exp %
.\" .\"
.\" $FreeBSD$ .\" $FreeBSD$
.Dd January 7, 1996 .Dd January 7, 1996
@ -98,12 +98,10 @@
末尾のヌル文字を含む実際にコピーされた文字数が 末尾のヌル文字を含む実際にコピーされた文字数が
.Fa *done .Fa *done
に返されます に返されます
.Po .Fa ( done
.Fa done
.Dv NULL .Dv NULL
ではない場合 ではない場合)。
.Pc Ns
.It Fn copyinstr .It Fn copyinstr
ユーザ空間のアドレス ユーザ空間のアドレス
.Fa uaddr .Fa uaddr
@ -115,12 +113,10 @@
末尾のヌル文字を含む実際にコピーされた文字数が 末尾のヌル文字を含む実際にコピーされた文字数が
.Fa *done .Fa *done
に返されます に返されます
.Po .Fa ( done
.Fa done
.Dv NULL .Dv NULL
ではない場合 ではない場合)。
.Pc Ns
.\" .It Fn copyoutstr .\" .It Fn copyoutstr
.\" カーネル空間のアドレス .\" カーネル空間のアドレス
.\" .Fa kaddr .\" .Fa kaddr

View file

@ -26,10 +26,10 @@
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\" .\"
.\" %FreeBSD: src/share/man/man9/device_add_child.9,v 1.16 2003/10/23 06:19:45 hmp Exp % .\" %FreeBSD: src/share/man/man9/device_add_child.9,v 1.19 2004/07/03 18:29:23 ru Exp %
.\" .\"
.\" $FreeBSD$ .\" $FreeBSD$
.Dd June 16, 1998 .Dd May 13, 2004
.Dt DEVICE_ADD_CHILD 9 .Dt DEVICE_ADD_CHILD 9
.Os .Os
.Sh 名称 .Sh 名称
@ -62,6 +62,8 @@
名前が指定されている場合には、その名前のドライバのみがプローブされます。 名前が指定されている場合には、その名前のドライバのみがプローブされます。
名前が与えられなかった場合には、 名前が与えられなかった場合には、
認識しているバスの全てのドライバがプローブされます。 認識しているバスの全てのドライバがプローブされます。
全てのイベントで、その名前に結び付いているドライバのロードとアンロードが
安全にできるように、そのデバイスの名前のみが格納されます。
.Pp .Pp
これは、デバイスインスタンスを独自に識別することができるバス (PCI 等) が、 これは、デバイスインスタンスを独自に識別することができるバス (PCI 等) が、
個々のドライバが個々のデバイスインスタンスに適合しているか 個々のドライバが個々のデバイスインスタンスに適合しているか
@ -73,12 +75,12 @@
通常、ユニット番号はシステムによって自動的に選択されますので、ユニット番号は 通常、ユニット番号はシステムによって自動的に選択されますので、ユニット番号は
.Dv -1 .Dv -1
が与えられるべきです。 が与えられるべきです。
指定のユニット番号が希望された時に (例えばハードウェアの一部分を 指定のユニット番号が希望された時に (例えばハードウェアの一部分を
あらかじめ設定されたユニット番号に結びつけるため)、unit は渡されるべきです。 あらかじめ設定されたユニット番号に結びつけるため)、unit は渡されるべきです。
指定されたユニット番号が既に割り当てられていた場合には、新しいユニット番号が 指定されたユニット番号が既に割り当てられていた場合には、新しいユニット番号が
割り当てられ、診断メッセージが表示されます。 割り当てられ、診断メッセージが表示されます。
.Pp .Pp
指定の順序でプローブされなければならないバス (例えばISA バス用の幾つかの 指定の順序でプローブされなければならないバス (例えば ISA バス用の幾つかの
デバイスは関連の無いドライバのプローブの試みの失敗に敏感で、それゆえ デバイスは関連の無いドライバのプローブの試みの失敗に敏感で、それゆえ
最初にプローブされなければならない) にアタッチされたデバイスの場合には、 最初にプローブされなければならない) にアタッチされたデバイスの場合には、
.Fn device_add_child_ordered .Fn device_add_child_ordered
@ -89,6 +91,19 @@
既存のより大きい順序を持つすべてのデバイスの前に追加されます。 既存のより大きい順序を持つすべてのデバイスの前に追加されます。
.Fn device_add_child .Fn device_add_child
が使用された場合には、順序が 0 であるとして新しい子が追加されます。 が使用された場合には、順序が 0 であるとして新しい子が追加されます。
.Pp
.Xr DEVICE_IDENTIFY 9
ルーチンのコンテキストでデバイスを追加するときには、
そのデバイスが既にツリーに追加されていないことを保証するために
いくつかの注意が払われなければなりません。
なぜならば、そのデバイスの名前と
.Vt devclass_t
はプローブ時に (子の追加時ではなく) 関連付けられ、(モジュールの中で
後でアンロードされたと示されている) そのドライバの前のインスタンスが
既に追加されているかもしれないからです。
バスドライバの作者は同様に、
子デバイスの複製を避けるためにロードおよびアンロードされるときに、
子の追加時にも注意しなければなりません。
.Sh 戻り値 .Sh 戻り値
成功時には新しいデバイスが、そうでなければ NULL が返されます。 成功時には新しいデバイスが、そうでなければ NULL が返されます。
.Sh 関連項目 .Sh 関連項目

View file

@ -24,10 +24,10 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
.\" DAMAGE. .\" DAMAGE.
.\" .\"
.\" %FreeBSD: src/share/man/man9/device_ids.9,v 1.2 2003/10/23 06:19:45 hmp Exp % .\" %FreeBSD: src/share/man/man9/device_ids.9,v 1.3 2004/06/22 20:18:15 le Exp %
.\" .\"
.\" $FreeBSD$ .\" $FreeBSD$
.Dd July 9, 2001 .Dd June 22, 2004
.Dt DEVICE_IDS 9 .Dt DEVICE_IDS 9
.Os .Os
.Sh 名称 .Sh 名称
@ -41,13 +41,13 @@
.In sys/types.h .In sys/types.h
.In sys/systm.h .In sys/systm.h
.Ft int .Ft int
.Fn major "dev_t dev" .Fn major "struct cdev *dev"
.Ft int .Ft int
.Fn minor "dev_t dev" .Fn minor "struct cdev *dev"
.Ft int .Ft int
.Fn umajor "udev_t id" .Fn umajor "dev_t id"
.Ft int .Ft int
.Fn uminor "udev_t id" .Fn uminor "dev_t id"
.Sh 解説 .Sh 解説
.Nm .Nm
ファミリの関数は、ローデバイスの ID である ファミリの関数は、ローデバイスの ID である
@ -70,7 +70,7 @@
および および
.Fn minor .Fn minor
.Dv NOUDEV .Dv NODEV
を返します。 を返します。
.Sh AUTHORS .Sh AUTHORS
このマニュアルページは このマニュアルページは

View file

@ -25,7 +25,7 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE. .\" SUCH DAMAGE.
.\" .\"
.\" %FreeBSD: src/share/man/man9/devstat.9,v 1.20 2003/10/23 01:54:06 hmp Exp % .\" %FreeBSD: src/share/man/man9/devstat.9,v 1.21 2004/07/03 18:29:24 ru Exp %
.\" .\"
.\" $FreeBSD$ .\" $FreeBSD$
.Dd May 22, 1998 .Dd May 22, 1998

View file

@ -33,7 +33,7 @@
.\" POSSIBILITY OF SUCH DAMAGE. .\" POSSIBILITY OF SUCH DAMAGE.
.\" .\"
.\" $NetBSD: malloc.9,v 1.3 1996/11/11 00:05:11 lukem Exp $ .\" $NetBSD: malloc.9,v 1.3 1996/11/11 00:05:11 lukem Exp $
.\" %FreeBSD: src/share/man/man9/malloc.9,v 1.39 2004/03/06 02:13:03 jkoshy Exp % .\" %FreeBSD: src/share/man/man9/malloc.9,v 1.40 2004/06/21 14:11:45 mpp Exp %
.\" $FreeBSD$ .\" $FreeBSD$
.\" .\"
.Dd June 12, 2003 .Dd June 12, 2003
@ -287,7 +287,7 @@ MALLOC(buf, struct foo_buf *, sizeof *buf, M_FOOBUF, M_NOWAIT);
.Dv ( M_NOWAIT .Dv ( M_NOWAIT
付であっても) または 付であっても) または
.Fn free .Fn free
への全ての呼出しは、VM オブジェクトと vnode の相互獲得のために、 への全ての呼出しは、VM オブジェクトと vnode の相互のからみ合いのために、
LOR (ロック順序の逆転) を引き起こします。 LOR (ロック順序の逆転) を引き起こします。
.Sh 関連項目 .Sh 関連項目
.Xr vmstat 8 , .Xr vmstat 8 ,

View file

@ -34,7 +34,7 @@
.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE .\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
.\" POSSIBILITY OF SUCH DAMAGE. .\" POSSIBILITY OF SUCH DAMAGE.
.\" .\"
.\" %FreeBSD: src/share/man/man9/mi_switch.9,v 1.17 2002/12/27 12:15:34 schweikh Exp % .\" %FreeBSD: src/share/man/man9/mi_switch.9,v 1.18 2004/07/03 18:29:24 ru Exp %
.\" .\"
.\" $FreeBSD$ .\" $FreeBSD$
.Dd November 24, 1996 .Dd November 24, 1996

View file

@ -22,7 +22,7 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE. .\" SUCH DAMAGE.
.\" .\"
.\" %FreeBSD: src/share/man/man9/microseq.9,v 1.17 2002/12/27 12:15:34 schweikh Exp % .\" %FreeBSD: src/share/man/man9/microseq.9,v 1.18 2004/07/03 18:29:24 ru Exp %
.\" $FreeBSD$ .\" $FreeBSD$
.\" .\"
.Dd June 6, 1998 .Dd June 6, 1998

View file

@ -26,7 +26,7 @@
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\" .\"
.\" %FreeBSD: src/share/man/man9/module.9,v 1.7 2001/07/10 15:30:58 ru Exp % .\" %FreeBSD: src/share/man/man9/module.9,v 1.8 2004/07/13 19:36:58 phk Exp %
.\" .\"
.\" $FreeBSD$ .\" $FreeBSD$
.Dd March 1, 2001 .Dd March 1, 2001
@ -45,21 +45,40 @@
.Pp .Pp
.Xr DECLARE_MODULE 9 .Xr DECLARE_MODULE 9
マクロはシステムにモジュールを登録します。 マクロはシステムにモジュールを登録します。
.Pp
そのモジュールがロードされた時に、 そのモジュールがロードされた時に、
.Fa what .Fa what
引数に 引数に
.Dv MOD_LOAD .Dv MOD_LOAD
が設定されて、イベントハンドラ関数が呼び出されます。 が設定されて、イベントハンドラ関数が呼び出されます。
アンロード時には、 .Pp
アンロード時は最初に
.Fa what .Fa what
には に MOD_QUIESCE が設定されて呼び出されます。
アンロードが強制されなかった場合には、0 ではない値が返ることで
アンロードの発生を防ぎます。
.Pp
アンロードが継続する場合には
.Fa what
.Dv MOD_UNLOAD .Dv MOD_UNLOAD
が設定されます。 が設定されます。
モジュールがこれに 0 ではない値を返す場合には、アンロードは起こりません。
.Pp
MOD_QUIESCE と MOD_UNLOAD の違いは、モジュールが使用中であれば
モジュールは MOD_QUIESCE を失敗させるべきであり、それに対して、
モジュールのアンロードが不可能な場合にのみ MOD_UNLOAD が失敗するべきです。
例えば、解除することができないそのモジュールへのメモリ参照がある場合です。
.Pp
システムがシャットダウンされる時には、 システムがシャットダウンされる時には、
.Fa what .Fa what
.Dv MOD_SHUTDOWN .Dv MOD_SHUTDOWN
の値を含みます。 の値を含みます。
.Pp
モジュールは
.Fa what
の値を認識できない場合は EOPNOTSUPP を返すべきです。
.Sh 使用例 .Sh 使用例
.Bd -literal .Bd -literal
#include <sys/param.h> #include <sys/param.h>

View file

@ -34,10 +34,10 @@
.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE .\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
.\" POSSIBILITY OF SUCH DAMAGE. .\" POSSIBILITY OF SUCH DAMAGE.
.\" .\"
.\" %FreeBSD: src/share/man/man9/physio.9,v 1.14 2003/09/12 19:20:05 hmp Exp % .\" %FreeBSD: src/share/man/man9/physio.9,v 1.15 2004/07/10 01:10:17 imp Exp %
.\" $FreeBSD$ .\" $FreeBSD$
.\" .\"
.Dd June 15, 1996 .Dd July 8, 2004
.Dt PHYSIO 9 .Dt PHYSIO 9
.Os .Os
.Sh 名称 .Sh 名称
@ -62,14 +62,20 @@
呼び出しごとの最大のデータ転送量は 呼び出しごとの最大のデータ転送量は
.Fa dev->si_iosize_max .Fa dev->si_iosize_max
によって決定されます。 によって決定されます。
.Fn physio
の呼び出しは入出力要求を
.Fn strategy
要求に変換し、その処理のため新しい要求をドライバの
.Fn strategy
ルーチンに渡します。
.Pp .Pp
.Fa uio .Fa uio
構造体は通常ユーザ空間のアドレスを示すので、 構造体は通常ユーザ空間のアドレスを示すので、
.Fn physio .Fn physio
はプロセスをメモリ中にロックする必要があります。 これらのページをメモリ中にロックする必要があります。
これは、プロセスに これは適切なページに対する
.Dv P_PHYSIO .Fn vmapbuf
フラグをセットすることで行ないます。 を呼び出すことで行われます。
以前にエラー状態が検出された時を除いて、 以前にエラー状態が検出された時を除いて、
.Fn physio .Fn physio
は常にリターンする前に全ての要求された転送が完了するまで待ちます。 は常にリターンする前に全ての要求された転送が完了するまで待ちます。
@ -87,6 +93,13 @@
フラグに フラグに
.Dv UIO_USERSPACE .Dv UIO_USERSPACE
以外の値をセットして渡した場合の結果は未定義です。 以外の値をセットして渡した場合の結果は未定義です。
.It Fa ioflag
.Fn physio
を呼び出している
.Fn read
または
.Fn write
関数からの ioflag 引数。
.El .El
.Sh 戻り値 .Sh 戻り値
成功すれば 成功すれば

View file

@ -1,5 +1,6 @@
.\" .\"
.\" Copyright (c) 2001 Andrew R. Reiter .\" Copyright (c) 2001 Andrew R. Reiter
.\" Copyritht (c) 2004 Joerg Wunsch
.\" All rights reserved. .\" All rights reserved.
.\" .\"
.\" Redistribution and use in source and binary forms, with or without .\" Redistribution and use in source and binary forms, with or without
@ -23,14 +24,14 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE. .\" SUCH DAMAGE.
.\" .\"
.\" %FreeBSD: src/share/man/man9/printf.9,v 1.3 2001/10/01 16:09:25 ru Exp % .\" %FreeBSD: src/share/man/man9/printf.9,v 1.4 2004/08/10 09:19:08 joerg Exp %
.\" .\"
.\" $FreeBSD$ .\" $FreeBSD$
.Dd April 25, 2001 .Dd August 10, 2004
.Dt PRINTF 9 .Dt PRINTF 9
.Os .Os
.Sh 名称 .Sh 名称
.Nm printf , uprintf , tprintf .Nm printf , uprintf , tprintf , log
.Nd フォーマットされた出力の変換 .Nd フォーマットされた出力の変換
.Sh 書式 .Sh 書式
.In sys/types.h .In sys/types.h
@ -41,12 +42,14 @@
.Fn tprintf "struct proc *p" "int pri" "const char *fmt" "..." .Fn tprintf "struct proc *p" "int pri" "const char *fmt" "..."
.Ft int .Ft int
.Fn uprintf "const char *fmt" "..." .Fn uprintf "const char *fmt" "..."
.Ft void
.Fn log "int pri" "const char *fmt" "..."
.Sh 解説 .Sh 解説
.Xr printf 9 .Xr printf 9
ファミリの関数は ファミリの関数は
.Xr printf 3 .Xr printf 3
ファミリの関数と類似しています。 ファミリの関数と類似しています。
この 3 つの関数はそれぞれ異なった出力ストリームを使用します。 この異なった関数はそれぞれ異なった出力ストリームを使用します。
.Fn uprintf .Fn uprintf
関数は現在のプロセスが制御している tty に出力しますが、 関数は現在のプロセスが制御している tty に出力しますが、
.Fn printf .Fn printf
@ -57,6 +60,11 @@
\&-1 でない場合には、プロセス \&-1 でない場合には、プロセス
.Fa p .Fa p
に関連づけられた tty およびロギングファシリティに出力します。 に関連づけられた tty およびロギングファシリティに出力します。
.Fn log
関数は
.Fa pri
によって示されたログレベルを使用して、
カーネルのロギングファシリティにメッセージを送ります。
.Pp .Pp
これらそれぞれの関連した関数は、 これらそれぞれの関連した関数は、
.Xr printf 3 .Xr printf 3
@ -75,7 +83,8 @@
です。 です。
これらはビットマスクのデコードのため、 これらはビットマスクのデコードのため、
レジスタ値と印字マスクとして使用されます。 レジスタ値と印字マスクとして使用されます。
この印字マスクは 2 つの部分で構成されます。基数と引数です。 この印字マスクは 2 つの部分で構成されます。
基数と引数です。
基数値は整数値として表現される出力の基数です。 基数値は整数値として表現される出力の基数です。
例えば、\\10 は 8 進数を \\20 は 16 進数を与えます。 例えば、\\10 は 8 進数を \\20 は 16 進数を与えます。
引数はビット識別子の並びとして構成されます。 引数はビット識別子の並びとして構成されます。
@ -98,6 +107,28 @@
文字列は個々のバイトの間のデリミタとして使用されます。 文字列は個々のバイトの間のデリミタとして使用されます。
もし存在すれば、幅ディレクティブが表示するバイト数を指定します。 もし存在すれば、幅ディレクティブが表示するバイト数を指定します。
デフォルトでは、16 バイトのデータが出力されます。 デフォルトでは、16 バイトのデータが出力されます。
.Pp
.Fn log
関数はその
.Fa pri
引数 (ここは誤解されて
.Sq priority (優先度)
と呼ばれていた) に
.Xr syslog 3
のレベル値の
.Dv LOG_DEBUG
から
.Dv LOG_EMERG
までを使用します。
代わりに、
.Fa pri
\&-1 が与えられた場合には、そのメッセージはその前の
.Fn log
の呼び出しによって開始された、最近のログメッセージに追加されます。
これらのメッセージはカーネル自身によって生成されるため、
このファシリティは常に
.Dv LOG_KERN
となります。
.Sh 戻り値 .Sh 戻り値
.Fn printf .Fn printf
および および
@ -121,5 +152,15 @@ printf_test(void)
reg=3<BITTWO,BITONE> reg=3<BITTWO,BITONE>
out: 41:41:41:41 out: 41:41:41:41
.Ed .Ed
.Pp
この呼び出し
.Bd -literal -offset indent
log(LOG_DEBUG, "%s%d: been there.\\n", sc->sc_name, sc->sc_unit);
.Ed
.Pp
は適切なデバッグメッセージを優先度
.Em kern.debug
でシステムログに追加します。
.Sh 関連項目 .Sh 関連項目
.Xr printf 3 .Xr printf 3 ,
.Xr syslog 3

View file

@ -23,7 +23,7 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE. .\" SUCH DAMAGE.
.\" .\"
.\" %FreeBSD: src/share/man/man9/pseudofs.9,v 1.4 2002/12/12 17:25:58 ru Exp % .\" %FreeBSD: src/share/man/man9/pseudofs.9,v 1.5 2004/07/03 18:29:24 ru Exp %
.\" .\"
.\" $FreeBSD$ .\" $FreeBSD$
.Dd September 30, 2001 .Dd September 30, 2001

View file

@ -23,10 +23,10 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE. .\" SUCH DAMAGE.
.\" .\"
.\" %FreeBSD: src/share/man/man9/sbuf.9,v 1.22 2004/01/25 11:39:41 des Exp % .\" %FreeBSD: src/share/man/man9/sbuf.9,v 1.24 2004/07/09 11:44:49 des Exp %
.\" $FreeBSD$ .\" $FreeBSD$
.\" .\"
.Dd January 3, 2002 .Dd July 9, 2004
.Dt SBUF 9 .Dt SBUF 9
.Os .Os
.Sh 名称 .Sh 名称
@ -60,11 +60,11 @@
.Ft int .Ft int
.Fn sbuf_setpos "struct sbuf *s" "int pos" .Fn sbuf_setpos "struct sbuf *s" "int pos"
.Ft int .Ft int
.Fn sbuf_bcat "struct sbuf *s" "const char *str" "size_t len" .Fn sbuf_bcat "struct sbuf *s" "const void *buf" "size_t len"
.Ft int .Ft int
.Fn sbuf_bcopyin "struct sbuf *s" "const void *uaddr" "size_t len" .Fn sbuf_bcopyin "struct sbuf *s" "const void *uaddr" "size_t len"
.Ft int .Ft int
.Fn sbuf_bcpy "struct sbuf *s" "const char *str" "size_t len" .Fn sbuf_bcpy "struct sbuf *s" "const void *buf" "size_t len"
.Ft int .Ft int
.Fn sbuf_cat "struct sbuf *s" "const char *str" .Fn sbuf_cat "struct sbuf *s" "const char *str"
.Ft int .Ft int
@ -170,8 +170,8 @@ sbuf
結果として、新しい位置において sbuf の先端を切り捨てることになります。 結果として、新しい位置において sbuf の先端を切り捨てることになります。
.Pp .Pp
.Fn sbuf_bcat .Fn sbuf_bcat
関数はバイト列 関数はバッファ
.Fa str .Fa buf
の最初の の最初の
.Fa len .Fa len
バイトを バイトを
@ -188,8 +188,8 @@ sbuf
.Fn sbuf_bcpy .Fn sbuf_bcpy
関数は 関数は
.Fa sbuf .Fa sbuf
の内容をバイト列 の内容をバッファ
.Fa str .Fa buf
の最初の の最初の
.Fa len .Fa len
バイトで置き換えます。 バイトで置き換えます。

View file

@ -24,10 +24,10 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
.\" DAMAGE. .\" DAMAGE.
.\" .\"
.\" %FreeBSD: src/share/man/man9/sema.9,v 1.6 2002/03/28 12:51:06 dd Exp % .\" %FreeBSD: src/share/man/man9/sema.9,v 1.9 2004/07/07 19:57:15 ru Exp %
.\"
.\" $FreeBSD$ .\" $FreeBSD$
.Dd August 13, 2001 .\"
.Dd June 14, 2004
.Dt SEMA 9 .Dt SEMA 9
.Os .Os
.Sh 名称 .Sh 名称
@ -102,13 +102,26 @@ mutex
.Fa timo .Fa timo
引数は失敗して戻る前にウェイトするための tick 単位での最小時間を指定します。 引数は失敗して戻る前にウェイトするための tick 単位での最小時間を指定します。
.Fn sema_value .Fn sema_value
は現在のセマフォの値を返します。 はセマフォの現在の値を読み出すために使用されます。
.Sh 戻り値
.Fn sema_value
関数は現在のセマフォの値を返します。
.Pp
セマフォのデクリメントによりその値が負になった場合には、
.Fn sema_trywait
は失敗を示すために 0 を返します。
そうでない場合には、成功を示すために 0 ではない値が返されます。
.Pp .Pp
.Fn sema_timedwait .Fn sema_timedwait
および 関数はそのセマフォ上でのウェイトが成功した場合には 0 を返し、
.Fn sema_trywait そうでない場合には 0 ではないエラーコードが返されます。
は、そのセマフォ上でのウェイトに失敗した場合には 0 を返します。 .Sh エラー
そうでない場合には、成功を示すために 0 ではない値が返されます。 .Fn sema_timedwait
関数は以下の場合に失敗します。
.Bl -tag -width Er
.It Bq Er EWOULDBLOCK
タイムアウトしました。
.El
.Sh 関連項目 .Sh 関連項目
.Xr condvar 9 , .Xr condvar 9 ,
.Xr mtx_pool 9 , .Xr mtx_pool 9 ,

View file

@ -23,7 +23,7 @@
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\" .\"
.\" %FreeBSD: src/share/man/man9/spl.9,v 1.18 2003/10/23 02:33:03 hmp Exp % .\" %FreeBSD: src/share/man/man9/spl.9,v 1.19 2004/07/03 18:29:24 ru Exp %
.\" $FreeBSD$ .\" $FreeBSD$
.\" .\"
.Dd July 21, 1996 .Dd July 21, 1996

View file

@ -22,7 +22,7 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE. .\" SUCH DAMAGE.
.\" .\"
.\" %FreeBSD: src/share/man/man9/style.9,v 1.105 2003/11/12 10:53:52 fanf Exp % .\" %FreeBSD: src/share/man/man9/style.9,v 1.110 2004/07/03 18:29:24 ru Exp %
.\" $FreeBSD$ .\" $FreeBSD$
.\" .\"
.Dd December 7, 2001 .Dd December 7, 2001
@ -50,7 +50,7 @@
* CSRG の KNF (Kernel Normal Form, カーネル標準書式) に基づいています。 * CSRG の KNF (Kernel Normal Form, カーネル標準書式) に基づいています。
* *
* @(#)style 1.14 (Berkeley) 4/28/95 * @(#)style 1.14 (Berkeley) 4/28/95
* $\&FreeBSD: src/share/man/man9/style.9,v 1.105 2003/11/12 10:53:52 fanf Exp $ * $\&FreeBSD: src/share/man/man9/style.9,v 1.110 2004/07/03 18:29:24 ru Exp $
*/ */
/* /*
@ -94,7 +94,7 @@ static char sccsid[] = "@(#)style 1.14 (Berkeley) 4/28/95";
#endif #endif
#include <sys/cdefs.h> #include <sys/cdefs.h>
__FBSDID("$\&FreeBSD: src/share/man/man9/style.9,v 1.105 2003/11/12 10:53:52 fanf Exp $"); __FBSDID("$\&FreeBSD: src/share/man/man9/style.9,v 1.110 2004/07/03 18:29:24 ru Exp $");
.Ed .Ed
.Pp .Pp
ヘッダファイルの前に、空行を 1 行付けます。 ヘッダファイルの前に、空行を 1 行付けます。
@ -172,7 +172,8 @@ __FBSDID("$\&FreeBSD: src/share/man/man9/style.9,v 1.105 2003/11/12 10:53:52 fan
.\" という ANSI のスタイルと衝突します。 .\" という ANSI のスタイルと衝突します。
.\" これは MALLOC() については言えないし、インライン関数を使う時の .\" これは MALLOC() については言えないし、インライン関数を使う時の
.\" 一般的なやりかたではありません。 .\" 一般的なやりかたではありません。
バックスラッシュは右揃えします。こうすると読みやすくなります。 バックスラッシュは右揃えします。
こうすると読みやすくなります。
マクロが複合文をカプセル化する場合には、それを マクロが複合文をカプセル化する場合には、それを
.Ic do .Ic do
ループで囲みます。 ループで囲みます。
@ -254,21 +255,25 @@ __FBSDID("$\&FreeBSD: src/share/man/man9/style.9,v 1.105 2003/11/12 10:53:52 fan
/* 更に別の大きな部分が、または他の条件付きのコードがここに */ /* 更に別の大きな部分が、または他の条件付きのコードがここに */
#else /* COMPAT_43 */ #else /* COMPAT_43 */
/* またはここに */ /* またはここに */
#endif /* !COMPAT_43*/ #endif /* !COMPAT_43 */
.Ed .Ed
.Pp .Pp
このプロジェクトは、 このプロジェクトは、
.Ic u_intXX_t .Vt u_intXX_t
形式の古い BSD スタイルの整数識別子よりもむしろ、 形式の古い
.Ic uintXX_t .Bx
スタイルの整数識別子よりもむしろ、
.Vt uintXX_t
形式の 形式の
.St -isoC-99 .St -isoC-99
の符号なし整数識別子を使用するように、徐々に移行しています。 の符号なし整数識別子を使用するように、徐々に移行しています。
新しいコードは後者を使用するべきで、さらにその領域の他の主要な作業が完了し、 新しいコードは後者を使用するべきで、さらにその領域の他の主要な作業が完了し、
古い BSD スタイルを好むための優先する理由がない場合には、古いコードは 古い
.Bx
スタイルを好むための優先する理由がない場合には、古いコードは
新しい形式に変換されるべきです。 新しい形式に変換されるべきです。
空白文字のコミットと同様に、 空白文字のコミットと同様に、
.Ic uintXX_t .Vt uintXX_t
のみのコミットをするよう、考慮すべきです。 のみのコミットをするよう、考慮すべきです。
.Pp .Pp
列挙値は全て大文字を使用します。 列挙値は全て大文字を使用します。
@ -415,7 +420,7 @@ static void usage(void);
/* /*
* 全ての主要なルーチンはそれが何をするのかを簡潔に記述した * 全ての主要なルーチンはそれが何をするのかを簡潔に記述した
* コメントを持つべきです。"main" ルーチンの前のコメントは * コメントを持つべきです。 "main" ルーチンの前のコメントは
* そのプログラムが何をするのかを記述するべきです。 * そのプログラムが何をするのかを記述するべきです。
*/ */
int int
@ -444,7 +449,7 @@ main(int argc, char *argv[])
.Li NOTREACHED .Li NOTREACHED
コメントを持つべきです。 コメントを持つべきです。
.Bd -literal .Bd -literal
while ((ch = getopt(argc, argv, "abn:")) != -1) while ((ch = getopt(argc, argv, "abNn:")) != -1)
switch (ch) { /* switch をインデント */ switch (ch) { /* switch をインデント */
case 'a': /* case はインデントしない */ case 'a': /* case はインデントしない */
aflag = 1; aflag = 1;
@ -452,6 +457,9 @@ main(int argc, char *argv[])
case 'b': case 'b':
bflag = 1; bflag = 1;
break; break;
case 'N':
Nflag = 1;
break;
case 'n': case 'n':
num = strtol(optarg, &ep, 10); num = strtol(optarg, &ep, 10);
if (num <= 0 || *ep != '\e0') { if (num <= 0 || *ep != '\e0') {
@ -637,7 +645,8 @@ ANSI C
キャストはいろいろな引数にとって必須で、その他の引数にとっても必要です。) キャストはいろいろな引数にとって必須で、その他の引数にとっても必要です。)
ポインタは ポインタは
.Dv NULL .Dv NULL
と比較します。例えば、 と比較します。
例えば、
.Bd -literal .Bd -literal
!(p = f()) !(p = f())
.Ed .Ed

View file

@ -31,7 +31,7 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE. .\" SUCH DAMAGE.
.\" .\"
.\" %FreeBSD: src/share/man/man9/suser.9,v 1.22 2004/04/06 19:49:21 ru Exp % .\" %FreeBSD: src/share/man/man9/suser.9,v 1.25 2004/07/26 07:24:01 cperciva Exp %
.\" $FreeBSD$ .\" $FreeBSD$
.\" .\"
.Dd April 2, 2002 .Dd April 2, 2002
@ -60,8 +60,9 @@
.Pp .Pp
.Fn suser_cred .Fn suser_cred
関数は、チェックされるべき証明がそのスレッド自身のものでない時、 関数は、チェックされるべき証明がそのスレッド自身のものでない時、
スレッドが存在しない時、またはスーパユーザの権限が スレッドが存在しない時、スーパユーザの権限が
閉じ込められた root に拡大されるべき時に、使用されるべきです。 閉じ込められた root に拡大されるべき時、またはチェックされるべき証明が
実効ユーザというよりは実際のユーザである時に、使用されるべきです。
.Pp .Pp
デフォルトでは、 デフォルトでは、
.Xr jail 2 .Xr jail 2
@ -72,7 +73,7 @@
関数へ渡す 関数へ渡す
.Fa flags .Fa flags
引数に 引数に
.Dv PRISON_ROOT .Dv SUSER_ALLOWJAIL
ビットを設定することによって実現されます。 ビットを設定することによって実現されます。
これが牢屋を弱くしないことを、注意深く再調査することが重要です。 これが牢屋を弱くしないことを、注意深く再調査することが重要です。
一般的には 一般的には
@ -82,6 +83,17 @@
によって行動が保護されている場所のみにおいて、 によって行動が保護されている場所のみにおいて、
このような権限を承諾されるべきです。 このような権限を承諾されるべきです。
.Pp .Pp
デフォルトでは、チェックされる証明は実効ユーザです。
代わりに実際のユーザをチェックする必要がある場合 (例えば、
リソースリミットが適用された場合の決定のとき) があります。
そして、これは
.Fn suser_cred
関数への
.Fa flag
引数に
.Dv SUSER_RUID
を渡すことによって行うことが可能です。
.Pp
.Fn suser .Fn suser
および および
.Fn suser_cred .Fn suser_cred
@ -108,3 +120,9 @@ TRUE
.Sh 関連項目 .Sh 関連項目
.Xr chroot 2 , .Xr chroot 2 ,
.Xr jail 2 .Xr jail 2
.Sh バグ
.Fn suser
および
.Fn suser_cred
関数は事実上は 2000 年の 8 月から、
スーパユーザの特権が使用されたことおよびされなかったことを記録しません。

View file

@ -24,7 +24,7 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
.\" DAMAGE. .\" DAMAGE.
.\" .\"
.\" %FreeBSD: src/share/man/man9/sx.9,v 1.27 2004/02/24 21:36:39 jhb Exp % .\" %FreeBSD: src/share/man/man9/sx.9,v 1.29 2004/07/11 16:08:25 darrenr Exp %
.\" .\"
.\" $FreeBSD$ .\" $FreeBSD$
.Dd August 14, 2001 .Dd August 14, 2001
@ -43,6 +43,7 @@
.Nm sx_try_upgrade , .Nm sx_try_upgrade ,
.Nm sx_downgrade , .Nm sx_downgrade ,
.Nm sx_assert , .Nm sx_assert ,
.Nm sx_unlock ,
.Nm SX_SYSINIT .Nm SX_SYSINIT
.Nd カーネルの共有/排他ロック .Nd カーネルの共有/排他ロック
.Sh 書式 .Sh 書式
@ -69,13 +70,17 @@
.Fn sx_try_upgrade "struct sx *sx" .Fn sx_try_upgrade "struct sx *sx"
.Ft void .Ft void
.Fn sx_downgrade "struct sx *sx" .Fn sx_downgrade "struct sx *sx"
.Pp
.Cd "options INVARIANTS"
.Cd "options INVARIANT_SUPPORT"
.Ft void .Ft void
.Fn sx_assert "struct sx *sx" "int what" .Fn sx_assert "struct sx *sx" "int what"
.In sys/kernel.h .\"
.Ss sx ユーティリティマクロ
.Fn sx_unlock "struct sx *sx"
.Fn SX_SYSINIT "name" "struct sx *sx" "const char *description" .Fn SX_SYSINIT "name" "struct sx *sx" "const char *description"
.\"
.Ss カーネルオプション
.Cd "options INVARIANTS"
.Cd "options INVARIANT_SUPPORT"
.In sys/kernel.h
.Sh 解説 .Sh 解説
共有/排他ロックは書き込まれるよりも、読み込まれる方が非常に多いデータを 共有/排他ロックは書き込まれるよりも、読み込まれる方が非常に多いデータを
保護するために使用されます。 保護するために使用されます。
@ -84,7 +89,8 @@ mutex
.Pp .Pp
共有/排他ロックは 共有/排他ロックは
.Fn sx_init .Fn sx_init
を使用して作成されます。ここで を使用して作成されます。
ここで
.Fa sx .Fa sx
.Vt struct sx .Vt struct sx
@ -100,6 +106,8 @@ mutex
.Fn sx_try_slock .Fn sx_try_slock
および および
.Fn sx_sunlock .Fn sx_sunlock
または
.Fn sx_unlock
の呼び出しによって共有ロックを獲得および解放します。 の呼び出しによって共有ロックを獲得および解放します。
スレッドは スレッドは
.Fn sx_xlock .Fn sx_xlock
@ -107,6 +115,8 @@ mutex
.Fn sx_try_xlock .Fn sx_try_xlock
および および
.Fn sx_xunlock .Fn sx_xunlock
または
.Fn sx_unlock
の呼び出しによって排他ロックを獲得および解放します。 の呼び出しによって排他ロックを獲得および解放します。
スレッドは スレッドは
.Fn sx_try_upgrade .Fn sx_try_upgrade
@ -132,9 +142,9 @@ mutex
付きでコンパイルされたときには、 付きでコンパイルされたときには、
.Fn sx_assert .Fn sx_assert
関数は 関数は
.Ar what .Fa what
に指定されたアサートのために に指定されたアサートのために
.Ar sx .Fa sx
をテストし、それらが合わなかった場合には panic します。 をテストし、それらが合わなかった場合には panic します。
以下のアサートがサポートされています。 以下のアサートがサポートされています。
.Bl -tag -width ".Dv SX_UNLOCKED" .Bl -tag -width ".Dv SX_UNLOCKED"
@ -156,6 +166,16 @@ mutex
ロック上に、ロックを持っていないことをアサートします。 ロック上に、ロックを持っていないことをアサートします。
.El .El
.Pp .Pp
プログラミングを簡単にするために、
.Fn sx_sunlock
および
.Fn sx_xunlock
各々の関数へのフロントエンドマクロとして
.Fn sx_unlock
が提供されています。
ロックがどの状態になっているかを知っているアルゴリズムは、
小さなパフォーマンスの利益のために各々の 2 つの特定の関数を使用すべきです。
.Pp
.Fn SX_SYSINIT .Fn SX_SYSINIT
マクロはシステムスタートアップ時に与えられた マクロはシステムスタートアップ時に与えられた
.Fa sx .Fa sx
@ -186,7 +206,7 @@ mutex
現在、ロックが保持されていないことをアサートする方法がありません。 現在、ロックが保持されていないことをアサートする方法がありません。
.Dv WITNESS .Dv WITNESS
ではない場合には、このスレッドが共有ロックを保持していないことを ではない場合には、このスレッドが共有ロックを保持していないことを
アサートすることは不可能です。  アサートすることは不可能です。
.Dv WITNESS .Dv WITNESS
ではない場合には、 ではない場合には、
.Dv SX_LOCKED .Dv SX_LOCKED

View file

@ -25,7 +25,7 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE. .\" SUCH DAMAGE.
.\" .\"
.\" %FreeBSD: src/share/man/man9/sysctl_add_oid.9,v 1.19 2004/02/27 17:13:42 des Exp % .\" %FreeBSD: src/share/man/man9/sysctl_add_oid.9,v 1.20 2004/07/03 18:29:24 ru Exp %
.\" $FreeBSD$ .\" $FreeBSD$
.\" .\"
.Dd July 15, 2000 .Dd July 15, 2000

View file

@ -25,7 +25,7 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE. .\" SUCH DAMAGE.
.\" .\"
.\" %FreeBSD: src/share/man/man9/sysctl_ctx_init.9,v 1.11 2004/04/06 20:16:10 markm Exp % .\" %FreeBSD: src/share/man/man9/sysctl_ctx_init.9,v 1.12 2004/07/03 18:29:24 ru Exp %
.\" $FreeBSD$ .\" $FreeBSD$
.\" .\"
.Dd July 15, 2000 .Dd July 15, 2000

View file

@ -26,7 +26,7 @@
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\" .\"
.\" %FreeBSD: src/share/man/man9/taskqueue.9,v 1.9 2004/01/02 07:23:40 scottl Exp % .\" %FreeBSD: src/share/man/man9/taskqueue.9,v 1.12 2004/08/08 02:37:22 jmg Exp %
.\" .\"
.\" $FreeBSD$ .\" $FreeBSD$
.Dd May 12, 2000 .Dd May 12, 2000
@ -53,7 +53,6 @@ struct task {
task_fn ta_func; /* タスクハンドラ */ task_fn ta_func; /* タスクハンドラ */
void *ta_context; /* ハンドラの引数 */ void *ta_context; /* ハンドラの引数 */
}; };
.Ed .Ed
.Ft struct taskqueue * .Ft struct taskqueue *
.Fn taskqueue_create "const char *name" "int mflags" "taskqueue_enqueue_fn enqueue" "void *context" .Fn taskqueue_create "const char *name" "int mflags" "taskqueue_enqueue_fn enqueue" "void *context"
@ -70,6 +69,7 @@ struct task {
.Fn TASK_INIT "struct task *task" "int priority" "task_fn_t *func" "void *context" .Fn TASK_INIT "struct task *task" "int priority" "task_fn_t *func" "void *context"
.Fn TASKQUEUE_DECLARE "name" .Fn TASKQUEUE_DECLARE "name"
.Fn TASKQUEUE_DEFINE "name" "taskqueue_enqueue_fn enqueue" "void *context" "init" .Fn TASKQUEUE_DEFINE "name" "taskqueue_enqueue_fn enqueue" "void *context" "init"
.Fn TASKQUEUE_DEFINE_THREAD "name"
.Sh 解説 .Sh 解説
これらの関数はコードの非同期の実行のための単純なインタフェースを提供します。 これらの関数はコードの非同期の実行のための単純なインタフェースを提供します。
.Pp .Pp
@ -155,12 +155,13 @@ task
.Va ta_pending .Va ta_pending
フィールドはクリアされます。 フィールドはクリアされます。
.Pp .Pp
2 つのマクロ 3 つのマクロ
.Fn TASKQUEUE_DECLARE "name" .Fn TASKQUEUE_DECLARE "name" ,
および
.Fn TASKQUEUE_DEFINE "name" "enqueue" "context" "init" .Fn TASKQUEUE_DEFINE "name" "enqueue" "context" "init"
は、グローバルなキューへの参照の宣言およびそのキューの実装の定義の および
ために使用されます。 +.Fn TASKQUEUE_DEFINE_THREAD "name"
は、グローバルなキューへの参照の宣言、そのキューの実装の定義、
および所有するスレッドを使用するキューを宣言するために使用されます。
.Fn TASKQUEUE_DEFINE .Fn TASKQUEUE_DEFINE
マクロは マクロは
.Va name , .Va name ,
@ -176,6 +177,16 @@ task
.Va init .Va init
引数が C のステートメントとして実行されます。 引数が C のステートメントとして実行されます。
.Pp .Pp
.Fn TASKQUEUE_DEFINE_THREAD
マクロはタスクを取り扱う自身が所有するカーネルスレッドで
新しいタスクキューを定義します。
変数
.Vt struct proc *taskqueue_name_proc
はタスクを取り扱うカーネルスレッドを含んで定義されます。
変数
.Vt struct taskqueue *taskqueue_name
はそのキューにタスクを追加するために使用されます。
.Pp
システムは 3 つのグローバルなタスクキュー システムは 3 つのグローバルなタスクキュー
.Va taskqueue_swi , .Va taskqueue_swi ,
.Va taskqueue_swi_giant , .Va taskqueue_swi_giant ,

View file

@ -29,7 +29,7 @@
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\" .\"
.\" %FreeBSD: src/share/man/man9/time.9,v 1.10 2003/10/23 02:33:03 hmp Exp % .\" %FreeBSD: src/share/man/man9/time.9,v 1.12 2004/06/16 08:33:57 ru Exp %
.\" .\"
.\" $FreeBSD$ .\" $FreeBSD$
.Dd March 22, 1997 .Dd March 22, 1997

View file

@ -34,7 +34,7 @@
.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE .\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
.\" POSSIBILITY OF SUCH DAMAGE. .\" POSSIBILITY OF SUCH DAMAGE.
.\" .\"
.\" %FreeBSD: src/share/man/man9/timeout.9,v 1.21 2004/04/06 23:08:49 cperciva Exp % .\" %FreeBSD: src/share/man/man9/timeout.9,v 1.23 2004/06/16 08:33:57 ru Exp %
.\" $FreeBSD$ .\" $FreeBSD$
.\" .\"
.Dd September 10, 1996 .Dd September 10, 1996
@ -103,7 +103,9 @@ struct callout_handle handle = CALLOUT_HANDLE_INITIALIZER(&handle)
.Ft struct callout_handle .Ft struct callout_handle
です。 です。
.Fn timeout .Fn timeout
の呼び出しは古いスタイルで、新しいコードは callout_* 関数を使用するべきです。 の呼び出しは古いスタイルで、新しいコードは
.Fn callout_*
関数を使用するべきです。
.Pp .Pp
関数 関数
.Fn callout_handle_init .Fn callout_handle_init
@ -143,7 +145,9 @@ struct callout_handle handle = CALLOUT_HANDLE_INITIALIZER(&handle)
以前に初期化されたハンドルを伴なわない untimeout の呼び出しの振る舞いは 以前に初期化されたハンドルを伴なわない untimeout の呼び出しの振る舞いは
未定義です。 未定義です。
.Fn untimeout .Fn untimeout
の呼び出しは古いスタイルで、新しいコードは callout_* 関数を使用するべきです。 の呼び出しは古いスタイルで、新しいコードは
.Fn callout_*
関数を使用するべきです。
.Pp .Pp
ハンドルがシステムによって再利用されるので、 ハンドルがシステムによって再利用されるので、
両方の呼び出しが同じ関数のポインタおよび引数を使用し、2 番目の呼び出しの前に 両方の呼び出しが同じ関数のポインタおよび引数を使用し、2 番目の呼び出しの前に
@ -201,7 +205,7 @@ timeout (
は、コールアウトが既に進行中の場合にはその完了をウェイトすることを除いて、 は、コールアウトが既に進行中の場合にはその完了をウェイトすることを除いて、
.Fn callout_stop .Fn callout_stop
と同一です。 と同一です。
は、そのコールアウトがブロックするかもしれないあらゆるロックを の関数は、そのコールアウトがブロックするかもしれないあらゆるロックを
保持している間は、決して呼び出されてはなりません。 保持している間は、決して呼び出されてはなりません。
さもないと結果としてデッドロックします。 さもないと結果としてデッドロックします。
.Pp .Pp
@ -231,7 +235,8 @@ timeout (
.An George Varghese .An George Varghese
.%T "Redesigning the BSD Callout and Timer Facilities" .%T "Redesigning the BSD Callout and Timer Facilities"
と名付けられた技術レポートで発表された作業に基づいています。また、 と名付けられた技術レポートで発表された作業に基づいています。
また、
.Fx .Fx
への導入のために への導入のために
.An Justin T. Gibbs .An Justin T. Gibbs

View file

@ -26,7 +26,7 @@
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\" .\"
.\" %FreeBSD: src/share/man/man9/vref.9,v 1.11 2003/10/23 02:22:07 hmp Exp % .\" %FreeBSD: src/share/man/man9/vref.9,v 1.12 2004/07/03 18:29:24 ru Exp %
.\" .\"
.\" $FreeBSD$ .\" $FreeBSD$
.Dd July 24, 1996 .Dd July 24, 1996

View file

@ -34,10 +34,10 @@
.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE .\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
.\" POSSIBILITY OF SUCH DAMAGE. .\" POSSIBILITY OF SUCH DAMAGE.
.\" .\"
.\" %FreeBSD: src/share/man/man9/vslock.9,v 1.11 2004/03/15 10:05:27 truckman Exp % .\" %FreeBSD: src/share/man/man9/vslock.9,v 1.15 2004/08/16 03:12:10 green Exp %
.\" .\"
.\" $FreeBSD$ .\" $FreeBSD$
.Dd June 15, 1996 .Dd August 10, 2004
.Dt VSLOCK 9 .Dt VSLOCK 9
.Os .Os
.Sh ̾¾Î .Sh ̾¾Î