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
.\" 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$
.Dd September 23, 2003
@ -32,29 +32,31 @@
.\"
.Sh 名称
.Nm BUS_CONFIG_INTR
.Nd 割り込みの極性およびトリガモードの設定
.Nd "割り込みの極性およびトリガモードの設定"
.\"
.Sh 書式
.In sys/param.h
.In sys/bus.h
.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 解説
.Nm
.Fn BUS_CONFIG_INTR
メソッドは、バスまたはデバイスのドライバが、親のバスに割り込み極性および
トリガモードを提供することを可能にします。
これは通常は、ルートバス (例えば nexus) までの全ての経路を上がって行きます。
その全ての経路において、
実際にハードウェアをプログラムするために必要な動作がなされます。
.Nm
.Fn BUS_CONFIG_INTR
メソッドは割り込み番号をとるため、
.Xr BUS_SETUP_INTR 9
より先に呼び出されることが必ずしも要求されませんが、当然だと仮定されます。
.Pp
.Fa trig
引数は以下のいずれかです。
.Bl -tag -width INTR_TRIGGER_CONFORM
.Bl -tag -width ".Dv INTR_TRIGGER_CONFORM"
.It Dv INTR_TRIGGER_CONFORM
割り込みトリガモードは、デバイスがアタッチされているバスにとっての標準です。
.It Dv INTR_TRIGGER_EDGE
@ -71,7 +73,7 @@
.Pp
.Fa pol
引数は以下のいずれかです。
.Bl -tag -width INTR_POLARITY_CONFORM
.Bl -tag -width ".Dv INTR_POLARITY_CONFORM"
.It Dv INTR_POLARITY_CONFORM
割り込みの極性は、デバイスがアタッチされているバスにとっての標準です。
.It Dv INTR_POLARITY_HIGH
@ -90,7 +92,7 @@
.Xr driver 9
.\"
.Sh 歴史
.Nm
.Fn BUS_CONFIG_INTR
メソッドは
.Fx 5.2
ではじめて登場しました。

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.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$
.Dd June 16, 1998
@ -42,15 +42,15 @@
.Fn DEVICE_DETACH "device_t dev"
.Sh 解説
デバイスをデタッチします。
ユーザがドライバソフトウェアを置き換えた場合、またはデバイスが
システムから物理的に切り離されようとしている場合(たとえば pccard デバイス)に、
ユーザがドライバソフトウェアを置き換えた場合、またはデバイスがシステムから
物理的に切り離されようとしている場合 (たとえば pccard デバイス) に、
呼び出されることができます。
.Pp
このメソッドは
.Xr DEVICE_ATTACH 9
メソッドで割り当てられたあらゆるシステムリソースを解放し、
ハードウェアを健全な状態に
リセットする (つまり割り込みを無効にするなど) べきです。
リセットする (すなわち割り込みを無効にするなど) べきです。
.Sh 戻り値
成功時には 0 が返され、それ以外の場合は適切なエラーが返されます。
.Sh 関連項目

View file

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

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_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$
.Dd June 16, 1998
@ -72,11 +72,13 @@
成功値 0 を返す場合には、
ドライバはそのデバイスがアタッチされるであろうと想定することはできますが、
プローブルーチンが戻った時にいかなるリソースをも保持してはなりません。
成功コード 0 を返すときには、
ドライバは softc は保存されていると決めてかかることができます。
.Sh 戻り値
0 以下の値は成功を表し、0 より大きな値はエラー (errno) を表します。
0 以下の値の時、0 は最高の優先順位を表し、それ以上のプローブは行ないません。
0 未満の値は、低い値程、低い優先順位を表します。
たとえば-100 は -50 よりも低い優先順位を表します。
たとえば -100 は -50 よりも低い優先順位を表します。
.Sh 関連項目
.Xr device 9 ,
.Xr DEVICE_ATTACH 9 ,

View file

@ -28,7 +28,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/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$
.Dd April 17, 1996
@ -48,7 +48,7 @@
.Fn MD5Transform "u_int32_t buf[4]" "const unsigned char block[64]"
.Sh 解説
.Nm
モジュールは、RSA Data Security, Inc. の MD5 メッセージダイジェスト
モジュールは、RSA Data Security, Inc.\& の MD5 メッセージダイジェスト
アルゴリズム(MD5)を実装しています。
これはデータの 128 ビットの MD5 ダイジェストを生成します。
.Pp

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_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$
.Dd July 24, 1996
@ -40,7 +40,7 @@
.In sys/mount.h
.In sys/vnode.h
.Ft int
.Fn VFS_ROOT "struct mount *mp" "struct vnode **vpp"
.Fn VFS_ROOT "struct mount *mp" "struct vnode **vpp" "struct thread *td"
.Sh 解説
ファイルシステムのルートディレクトリに対する、ロックされた vnode を返します。
.Pp
@ -50,6 +50,8 @@
ファイルシステム。
.It Fa vpp
ルート vnode の引数の戻り値。
.It Fa td
呼び出し側のスレッド。
.El
.Sh 関連項目
.Xr VFS 9 ,

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/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$
.Dd July 24, 1996
@ -72,21 +72,6 @@
これらのエントリポイントは、オブジェクトの生成中に
.Xr VOP_LOOKUP 9
の後に呼び出されます。
通常、
.Xr VOP_LOOKUP 9
.Dv SAVENAME
フラグを
.Fa cnp->cn_flags
中に設定して、
.Fa cnp->cn_pnbuf
で指されるメモリを正当なままに保ちます。
ファイルの作成時にエラーが検出された場合には、このメモリは解放されます。
ファイルがうまく作成された場合には、
.Fa cnp
.Dv SAVESTART
フラグが指定されていなければ、解放されます。
.Sh ロック
ディレクトリ
.Fa dvp
@ -114,11 +99,8 @@ vop_create(struct vnode *dvp,
mode |= IFREG;
error = SOMEFS_VALLOC(dvp, mode, cnp->cn_cred, &vp);
if (error) {
free(cnp->cn_pnbuf, M_NAMEI);
vput(dvp);
if (error)
return error;
}
/*
* 新しい vnode のパーミッションを更新します。
@ -142,9 +124,6 @@ vop_create(struct vnode *dvp,
if (error)
goto bad;
if ((cnp->cn_flags & SAVESTART) == 0)
free(cnp->cn_pnbuf, M_NAMEI);
vput(dvp);
*vpp = vp;
return 0;
@ -154,7 +133,6 @@ bad:
* inode またはディレクトリの更新の試みで書き込みエラーが
* 発生したため inode の割り当てを解放しなければなりません。
*/
free(cnp->cn_pnbuf, M_NAMEI);
vput(vp);
/*
@ -162,8 +140,6 @@ bad:
*/
...;
vput(dvp);
return error;
}
.Ed

View file

@ -27,7 +27,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/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$
.Dd September 27, 2003

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/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$
.Dd July 24, 1996
@ -109,8 +109,8 @@ vop_link(struct vnode *dvp, struct vnode *vp, struct componentname *cnp)
異なるファイルシステム間ではハードリンクは利用できません。
.El
.Sh 関連項目
.Xr vnode 9 ,
.Xr vn_lock 9
.Xr vn_lock 9 ,
.Xr vnode 9
.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/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$
.Dd November 24, 1997
@ -63,7 +63,7 @@ struct componentname {
*/
u_long cn_nameiop; /* namei 操作 */
u_long cn_flags; /* namei へのフラグ */
struct proc *cn_proc; /* lookup を要求しているプロセス */
struct thread *cn_proc; /* lookup を要求しているスレッド */
struct ucred *cn_cred; /* 証明 */
/*
* 検索ルーチンおよびコミットルーチンで共有されます。
@ -107,7 +107,8 @@ notfound:
.Bd -ragged -offset indent
作成または名前変更でパス名の最後の場合には、
.Er EJUSTRETURN
を返し、利用可能な位置に情報を残します。そうでなければ
を返し、利用可能な位置に情報を残します。
そうでなければ
.Er ENOENT
を返します。
.Ed
@ -174,7 +175,7 @@ vop_lookup(struct vnode *dvp,
if (dvp->v_type != VDIR)
return ENOTDIR;
error = VOP_ACCESS(dvp, VEXEC, cred, cnp->cn_proc);
error = VOP_ACCESS(dvp, VEXEC, cred, cnp->cn_thread);
if (error)
return (error);
@ -225,7 +226,7 @@ vop_lookup(struct vnode *dvp,
if (vpid == vp->v_id) {
/*
* lockparent && islastcn の場合には dvp がロック
* されます。vp がロックされます。
* されます。 vp がロックされます。
*/
return (0);
}
@ -261,7 +262,7 @@ vop_lookup(struct vnode *dvp,
/*
* できる限り、ディレクトリの中の新しい要素の名前のために
* 十分に大きい場所の位置を記録します。これは dvp のための
* 十分に大きい場所の位置を記録します。 これは dvp のための
* vnode の私的データの中に記録されることが可能です。
* VOP_CREATE または VOP_RENAME で後で使用するために、
* パス名に保持するために SAVENAME フラグを設定します。
@ -287,7 +288,7 @@ vop_lookup(struct vnode *dvp,
} else {
/*
* 削除でパス名の最後の場合には、ファイルの削除に使用できる
* パラメータを返します。wantparent フラグが設定されていない
* パラメータを返します。 wantparent フラグが設定されていない
* 場合にはそのディレクトリのみを返し、そうでない場合には
* 続けてその 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)
return (error);
@ -330,7 +331,7 @@ vop_lookup(struct vnode *dvp,
* ディレクトリエントリの inode を取得しなければなりません。
*/
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)
return (error);
@ -355,21 +356,21 @@ vop_lookup(struct vnode *dvp,
}
/*
* 名前の変換のステップの全容です。シンボリックリンクが現在の
* 名前の変換のステップの全容です。 シンボリックリンクが現在の
* ディレクトリからの相対である場合には、再度必要になるので、
* ディレクトリを 'vput' しません。代わりに "pdp" として
* アンロックされたディレクトリを保存します。取得する前にその
* ディレクトリを 'vput' しません。 代わりに "pdp" として
* アンロックされたディレクトリを保存します。 取得する前にその
* inode が削除されないことを保証するために、そのディレクトリを
* アンロックする前に目的の inode を取得しなければなりません。
* ルートからディレクトリツリーを下る方向で inode を取得する
* ことで、デッドロックを常に予防します。従がって、逆向きの
* ことで、デッドロックを常に予防します。 従がって、逆向きの
* ポインタ ".." を辿るときには、要求されたディレクトリを取得する
* 前に親ディレクトリをアンロックしなければなりません。".." に
* 前に親ディレクトリをアンロックしなければなりません。 ".." に
* 関連付けられた inode のための VFS_VGET が戻る前に、現在の
* および親ディレクトリの両方が削除された場合には、ここに潜在的な
* 競合状態があります。きわめて複雑なデッドロック検出アルゴリズム
* 競合状態があります。 きわめて複雑なデッドロック検出アルゴリズム
* の実装なしにこの競合状態を避けることができないので、この
* 競合状態の発生が稀であることを期待しています。ファイルシステムが、
* 競合状態の発生が稀であることを期待しています。 ファイルシステムが、
* ".." 以外に、ディレクトリ構造の中に遡りを指すハードリンクを
* 持つ場合、この簡単なデッドロック検出機構が働かないことにも注意
* してください。

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/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$
.Dd July 24, 1996
@ -40,7 +40,7 @@
.In sys/param.h
.In sys/vnode.h
.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
.Fn VOP_CLOSE "struct vnode *vp" "int mode" "struct ucred *cred" "struct thread *td"
.Sh 解説
@ -61,6 +61,15 @@
ファイルにアクセスしているスレッド。
.El
.Pp
加えて、
.Fn VOP_OPEN
.Fa fdidx
の中のファイル記述子番号を受け入れることが可能です。
これは例えば
.Xr fdesc 5
のような情報を要求するファイルシステムで有用です。
.Pp
アクセスモードは、
.Dv FREAD ,
.Dv FWRITE ,
@ -80,6 +89,14 @@ vnode
.Fa vn_close
は、ロックされていない参照された vnode を期待し、
戻る前に参照を手繰ることに注意してください。
.Sh 実装に関する注
.Fn VOP_OPEN
への
.Fa fdidx
引数は現在使用されておらず、当面は
.Ql \-1
を使用します。
しかしながら、これは将来変更されます。
.Sh 戻り値
成功時には 0 が返され、そうでない場合にはエラーコードが返されます。
.Sh 疑似コード

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/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$
.Dd July 24, 1996
@ -142,7 +142,7 @@ vop_read(struct vnode *vp, struct uio *uio, int ioflag, struct ucred *cred)
if (bp != NULL)
bqrelse(bp);
return error;
return (error);
}
int
@ -207,7 +207,8 @@ vop_write(struct vnode *vp, struct uio *uio, int ioflag, struct ucred *cred)
if (error) {
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_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 これは何をしているの? */
}
return error;
return (error);
}
.Ed
.Sh エラー

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/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$
.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);
if (doingdirectory && fdvp != tdvp) {
/*

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/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$
.\" "
.Dd June 25, 2000
@ -62,7 +62,7 @@ accept
システムコールを介して要求されます。
.Sh 実装に関する注
accept フィルタになりたいモジュールは、システムに
.Vt struct accept_filter
.Vt "struct accept_filter"
構造体を提供しなければなりません。
.Bd -literal
struct accept_filter {
@ -75,29 +75,29 @@ struct accept_filter {
.Ed
.Pp
そのモジュールは、
.Fn malloc
.Xr malloc 9
で割当てられた
.Fa struct accept_filter
.Vt "struct accept_filter"
構造体へのポインタを渡す関数
.Fn accept_filt_add
を使用して、それを登録するべきです。
.Pp
.Vt struct accept_filter
.Vt "struct accept_filter"
のフィールドは以下の通りです。
.Bl -tag -width accf_callbackXXX
.It Vt accf_name
.Bl -tag -width ".Va accf_callback"
.It Va accf_name
フィルタの名前です。
これはユーザ領域からアクセスされる方法です。
.It Fn accf_callback
.It Va accf_callback
接続が確立されたときにカーネルが実行するコールバックです。
これは socket upcall と同等で、そのコールバックがソケットのフラグを
変更しない限りは、接続が確立したとき、
またソケットに新しいデータが届くたびに、呼出されます。
.It Fn accf_create
.It Va accf_create
監視しているソケット上に
.Xr setsockopt 2
がフィルタをインストールするたびに呼出されます。
.It Fn accf_destroy
.It Va accf_destroy
ユーザがそのソケット上の accept フィルタを取り除くたびに呼出されます。
.El
.Pp
@ -111,7 +111,7 @@ struct accept_filter {
.Pp
.Fn accept_filt_get
関数は
.Fn setsockopt
.Xr setsockopt 2
システムコールを介して使用されるための accept フィルタを
見つけるために内部で使用されます。
.Pp
@ -141,7 +141,7 @@ accept
.An Jeroen Ruigrok van der Werven
が書きました。
.Pp
accept フィルタの構想は Yahoo! の
accept フィルタの構想は Yahoo!\&
.An David Filo
によって開拓され、
.An Alfred Perlstein

View file

@ -32,7 +32,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/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$
.Dd February 14, 1997
@ -74,7 +74,7 @@
.It
割り込みを無効にします。
.It
クラッシュの後の再起動の場合 (例えば、
クラッシュの後の再起動の場合 (すなわち
.Fa howto
.Dv RB_DUMP

View file

@ -29,7 +29,7 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" 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$
.\"
.Dd December 22, 1998
@ -126,7 +126,7 @@ VM
ダーティであると目印を付けられ、そのバッファは正当/ダーティの状態情報を
失うことなく、完全に解放されることが可能です。
(XXX この状況に配慮して、その他のフラグをチェックしなければならない
のでしょうか ???)
のでしょうか ???)
.Pp
カーネルは VM バッファのデータマップを保持するために、その KVM 空間の
一部を予約します。

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.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$
.Dd May 18, 2000

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_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$
.Dd March 27, 2003

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_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$
.Dd May 18, 2000

View file

@ -25,7 +25,7 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" 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$
.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
.\" 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$
.Dd December 11, 2000

View file

@ -32,7 +32,7 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" 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$
.Dd January 7, 1996
@ -98,12 +98,10 @@
末尾のヌル文字を含む実際にコピーされた文字数が
.Fa *done
に返されます
.Po
.Fa done
.Fa ( done
.Dv NULL
ではない場合
.Pc Ns
ではない場合)。
.It Fn copyinstr
ユーザ空間のアドレス
.Fa uaddr
@ -115,12 +113,10 @@
末尾のヌル文字を含む実際にコピーされた文字数が
.Fa *done
に返されます
.Po
.Fa done
.Fa ( done
.Dv NULL
ではない場合
.Pc Ns
ではない場合)。
.\" .It Fn copyoutstr
.\" カーネル空間のアドレス
.\" .Fa kaddr

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_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$
.Dd June 16, 1998
.Dd May 13, 2004
.Dt DEVICE_ADD_CHILD 9
.Os
.Sh 名称
@ -62,6 +62,8 @@
名前が指定されている場合には、その名前のドライバのみがプローブされます。
名前が与えられなかった場合には、
認識しているバスの全てのドライバがプローブされます。
全てのイベントで、その名前に結び付いているドライバのロードとアンロードが
安全にできるように、そのデバイスの名前のみが格納されます。
.Pp
これは、デバイスインスタンスを独自に識別することができるバス (PCI 等) が、
個々のドライバが個々のデバイスインスタンスに適合しているか
@ -73,12 +75,12 @@
通常、ユニット番号はシステムによって自動的に選択されますので、ユニット番号は
.Dv -1
が与えられるべきです。
指定のユニット番号が希望された時に (例えばハードウェアの一部分を
指定のユニット番号が希望された時に (例えばハードウェアの一部分を
あらかじめ設定されたユニット番号に結びつけるため)、unit は渡されるべきです。
指定されたユニット番号が既に割り当てられていた場合には、新しいユニット番号が
割り当てられ、診断メッセージが表示されます。
.Pp
指定の順序でプローブされなければならないバス (例えばISA バス用の幾つかの
指定の順序でプローブされなければならないバス (例えば ISA バス用の幾つかの
デバイスは関連の無いドライバのプローブの試みの失敗に敏感で、それゆえ
最初にプローブされなければならない) にアタッチされたデバイスの場合には、
.Fn device_add_child_ordered
@ -89,6 +91,19 @@
既存のより大きい順序を持つすべてのデバイスの前に追加されます。
.Fn device_add_child
が使用された場合には、順序が 0 であるとして新しい子が追加されます。
.Pp
.Xr DEVICE_IDENTIFY 9
ルーチンのコンテキストでデバイスを追加するときには、
そのデバイスが既にツリーに追加されていないことを保証するために
いくつかの注意が払われなければなりません。
なぜならば、そのデバイスの名前と
.Vt devclass_t
はプローブ時に (子の追加時ではなく) 関連付けられ、(モジュールの中で
後でアンロードされたと示されている) そのドライバの前のインスタンスが
既に追加されているかもしれないからです。
バスドライバの作者は同様に、
子デバイスの複製を避けるためにロードおよびアンロードされるときに、
子の追加時にも注意しなければなりません。
.Sh 戻り値
成功時には新しいデバイスが、そうでなければ NULL が返されます。
.Sh 関連項目

View file

@ -24,10 +24,10 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
.\" 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$
.Dd July 9, 2001
.Dd June 22, 2004
.Dt DEVICE_IDS 9
.Os
.Sh 名称
@ -41,13 +41,13 @@
.In sys/types.h
.In sys/systm.h
.Ft int
.Fn major "dev_t dev"
.Fn major "struct cdev *dev"
.Ft int
.Fn minor "dev_t dev"
.Fn minor "struct cdev *dev"
.Ft int
.Fn umajor "udev_t id"
.Fn umajor "dev_t id"
.Ft int
.Fn uminor "udev_t id"
.Fn uminor "dev_t id"
.Sh 解説
.Nm
ファミリの関数は、ローデバイスの ID である
@ -70,7 +70,7 @@
および
.Fn minor
.Dv NOUDEV
.Dv NODEV
を返します。
.Sh AUTHORS
このマニュアルページは

View file

@ -25,7 +25,7 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" 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$
.Dd May 22, 1998

View file

@ -33,7 +33,7 @@
.\" POSSIBILITY OF SUCH DAMAGE.
.\"
.\" $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$
.\"
.Dd June 12, 2003
@ -287,7 +287,7 @@ MALLOC(buf, struct foo_buf *, sizeof *buf, M_FOOBUF, M_NOWAIT);
.Dv ( M_NOWAIT
付であっても) または
.Fn free
への全ての呼出しは、VM オブジェクトと vnode の相互獲得のために、
への全ての呼出しは、VM オブジェクトと vnode の相互のからみ合いのために、
LOR (ロック順序の逆転) を引き起こします。
.Sh 関連項目
.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
.\" 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$
.Dd November 24, 1996

View file

@ -22,7 +22,7 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" 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$
.\"
.Dd June 6, 1998

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/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$
.Dd March 1, 2001
@ -45,21 +45,40 @@
.Pp
.Xr DECLARE_MODULE 9
マクロはシステムにモジュールを登録します。
.Pp
そのモジュールがロードされた時に、
.Fa what
引数に
.Dv MOD_LOAD
が設定されて、イベントハンドラ関数が呼び出されます。
アンロード時には、
.Pp
アンロード時は最初に
.Fa what
には
に MOD_QUIESCE が設定されて呼び出されます。
アンロードが強制されなかった場合には、0 ではない値が返ることで
アンロードの発生を防ぎます。
.Pp
アンロードが継続する場合には
.Fa what
.Dv MOD_UNLOAD
が設定されます。
モジュールがこれに 0 ではない値を返す場合には、アンロードは起こりません。
.Pp
MOD_QUIESCE と MOD_UNLOAD の違いは、モジュールが使用中であれば
モジュールは MOD_QUIESCE を失敗させるべきであり、それに対して、
モジュールのアンロードが不可能な場合にのみ MOD_UNLOAD が失敗するべきです。
例えば、解除することができないそのモジュールへのメモリ参照がある場合です。
.Pp
システムがシャットダウンされる時には、
.Fa what
.Dv MOD_SHUTDOWN
の値を含みます。
.Pp
モジュールは
.Fa what
の値を認識できない場合は EOPNOTSUPP を返すべきです。
.Sh 使用例
.Bd -literal
#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
.\" 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$
.\"
.Dd June 15, 1996
.Dd July 8, 2004
.Dt PHYSIO 9
.Os
.Sh 名称
@ -62,14 +62,20 @@
呼び出しごとの最大のデータ転送量は
.Fa dev->si_iosize_max
によって決定されます。
.Fn physio
の呼び出しは入出力要求を
.Fn strategy
要求に変換し、その処理のため新しい要求をドライバの
.Fn strategy
ルーチンに渡します。
.Pp
.Fa uio
構造体は通常ユーザ空間のアドレスを示すので、
.Fn physio
はプロセスをメモリ中にロックする必要があります。
これは、プロセスに
.Dv P_PHYSIO
フラグをセットすることで行ないます。
これらのページをメモリ中にロックする必要があります。
これは適切なページに対する
.Fn vmapbuf
を呼び出すことで行われます。
以前にエラー状態が検出された時を除いて、
.Fn physio
は常にリターンする前に全ての要求された転送が完了するまで待ちます。
@ -87,6 +93,13 @@
フラグに
.Dv UIO_USERSPACE
以外の値をセットして渡した場合の結果は未定義です。
.It Fa ioflag
.Fn physio
を呼び出している
.Fn read
または
.Fn write
関数からの ioflag 引数。
.El
.Sh 戻り値
成功すれば

View file

@ -1,5 +1,6 @@
.\"
.\" Copyright (c) 2001 Andrew R. Reiter
.\" Copyritht (c) 2004 Joerg Wunsch
.\" All rights reserved.
.\"
.\" 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
.\" 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$
.Dd April 25, 2001
.Dd August 10, 2004
.Dt PRINTF 9
.Os
.Sh 名称
.Nm printf , uprintf , tprintf
.Nm printf , uprintf , tprintf , log
.Nd フォーマットされた出力の変換
.Sh 書式
.In sys/types.h
@ -41,12 +42,14 @@
.Fn tprintf "struct proc *p" "int pri" "const char *fmt" "..."
.Ft int
.Fn uprintf "const char *fmt" "..."
.Ft void
.Fn log "int pri" "const char *fmt" "..."
.Sh 解説
.Xr printf 9
ファミリの関数は
.Xr printf 3
ファミリの関数と類似しています。
この 3 つの関数はそれぞれ異なった出力ストリームを使用します。
この異なった関数はそれぞれ異なった出力ストリームを使用します。
.Fn uprintf
関数は現在のプロセスが制御している tty に出力しますが、
.Fn printf
@ -57,6 +60,11 @@
\&-1 でない場合には、プロセス
.Fa p
に関連づけられた tty およびロギングファシリティに出力します。
.Fn log
関数は
.Fa pri
によって示されたログレベルを使用して、
カーネルのロギングファシリティにメッセージを送ります。
.Pp
これらそれぞれの関連した関数は、
.Xr printf 3
@ -75,7 +83,8 @@
です。
これらはビットマスクのデコードのため、
レジスタ値と印字マスクとして使用されます。
この印字マスクは 2 つの部分で構成されます。基数と引数です。
この印字マスクは 2 つの部分で構成されます。
基数と引数です。
基数値は整数値として表現される出力の基数です。
例えば、\\10 は 8 進数を \\20 は 16 進数を与えます。
引数はビット識別子の並びとして構成されます。
@ -98,6 +107,28 @@
文字列は個々のバイトの間のデリミタとして使用されます。
もし存在すれば、幅ディレクティブが表示するバイト数を指定します。
デフォルトでは、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 戻り値
.Fn printf
および
@ -121,5 +152,15 @@ printf_test(void)
reg=3<BITTWO,BITONE>
out: 41:41:41:41
.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 関連項目
.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
.\" 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$
.Dd September 30, 2001

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/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$
.\"
.Dd January 3, 2002
.Dd July 9, 2004
.Dt SBUF 9
.Os
.Sh 名称
@ -60,11 +60,11 @@
.Ft int
.Fn sbuf_setpos "struct sbuf *s" "int pos"
.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
.Fn sbuf_bcopyin "struct sbuf *s" "const void *uaddr" "size_t len"
.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
.Fn sbuf_cat "struct sbuf *s" "const char *str"
.Ft int
@ -170,8 +170,8 @@ sbuf
結果として、新しい位置において sbuf の先端を切り捨てることになります。
.Pp
.Fn sbuf_bcat
関数はバイト列
.Fa str
関数はバッファ
.Fa buf
の最初の
.Fa len
バイトを
@ -188,8 +188,8 @@ sbuf
.Fn sbuf_bcpy
関数は
.Fa sbuf
の内容をバイト列
.Fa str
の内容をバッファ
.Fa buf
の最初の
.Fa len
バイトで置き換えます。

View file

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

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/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$
.\"
.Dd July 21, 1996

View file

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

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.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$
.\"
.Dd April 2, 2002
@ -60,8 +60,9 @@
.Pp
.Fn suser_cred
関数は、チェックされるべき証明がそのスレッド自身のものでない時、
スレッドが存在しない時、またはスーパユーザの権限が
閉じ込められた root に拡大されるべき時に、使用されるべきです。
スレッドが存在しない時、スーパユーザの権限が
閉じ込められた root に拡大されるべき時、またはチェックされるべき証明が
実効ユーザというよりは実際のユーザである時に、使用されるべきです。
.Pp
デフォルトでは、
.Xr jail 2
@ -72,7 +73,7 @@
関数へ渡す
.Fa flags
引数に
.Dv PRISON_ROOT
.Dv SUSER_ALLOWJAIL
ビットを設定することによって実現されます。
これが牢屋を弱くしないことを、注意深く再調査することが重要です。
一般的には
@ -82,6 +83,17 @@
によって行動が保護されている場所のみにおいて、
このような権限を承諾されるべきです。
.Pp
デフォルトでは、チェックされる証明は実効ユーザです。
代わりに実際のユーザをチェックする必要がある場合 (例えば、
リソースリミットが適用された場合の決定のとき) があります。
そして、これは
.Fn suser_cred
関数への
.Fa flag
引数に
.Dv SUSER_RUID
を渡すことによって行うことが可能です。
.Pp
.Fn suser
および
.Fn suser_cred
@ -108,3 +120,9 @@ TRUE
.Sh 関連項目
.Xr chroot 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
.\" 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$
.Dd August 14, 2001
@ -43,6 +43,7 @@
.Nm sx_try_upgrade ,
.Nm sx_downgrade ,
.Nm sx_assert ,
.Nm sx_unlock ,
.Nm SX_SYSINIT
.Nd カーネルの共有/排他ロック
.Sh 書式
@ -69,13 +70,17 @@
.Fn sx_try_upgrade "struct sx *sx"
.Ft void
.Fn sx_downgrade "struct sx *sx"
.Pp
.Cd "options INVARIANTS"
.Cd "options INVARIANT_SUPPORT"
.Ft void
.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"
.\"
.Ss カーネルオプション
.Cd "options INVARIANTS"
.Cd "options INVARIANT_SUPPORT"
.In sys/kernel.h
.Sh 解説
共有/排他ロックは書き込まれるよりも、読み込まれる方が非常に多いデータを
保護するために使用されます。
@ -84,7 +89,8 @@ mutex
.Pp
共有/排他ロックは
.Fn sx_init
を使用して作成されます。ここで
を使用して作成されます。
ここで
.Fa sx
.Vt struct sx
@ -100,6 +106,8 @@ mutex
.Fn sx_try_slock
および
.Fn sx_sunlock
または
.Fn sx_unlock
の呼び出しによって共有ロックを獲得および解放します。
スレッドは
.Fn sx_xlock
@ -107,6 +115,8 @@ mutex
.Fn sx_try_xlock
および
.Fn sx_xunlock
または
.Fn sx_unlock
の呼び出しによって排他ロックを獲得および解放します。
スレッドは
.Fn sx_try_upgrade
@ -132,9 +142,9 @@ mutex
付きでコンパイルされたときには、
.Fn sx_assert
関数は
.Ar what
.Fa what
に指定されたアサートのために
.Ar sx
.Fa sx
をテストし、それらが合わなかった場合には panic します。
以下のアサートがサポートされています。
.Bl -tag -width ".Dv SX_UNLOCKED"
@ -156,6 +166,16 @@ mutex
ロック上に、ロックを持っていないことをアサートします。
.El
.Pp
プログラミングを簡単にするために、
.Fn sx_sunlock
および
.Fn sx_xunlock
各々の関数へのフロントエンドマクロとして
.Fn sx_unlock
が提供されています。
ロックがどの状態になっているかを知っているアルゴリズムは、
小さなパフォーマンスの利益のために各々の 2 つの特定の関数を使用すべきです。
.Pp
.Fn SX_SYSINIT
マクロはシステムスタートアップ時に与えられた
.Fa sx
@ -186,7 +206,7 @@ mutex
現在、ロックが保持されていないことをアサートする方法がありません。
.Dv WITNESS
ではない場合には、このスレッドが共有ロックを保持していないことを
アサートすることは不可能です。 
アサートすることは不可能です。
.Dv WITNESS
ではない場合には、
.Dv SX_LOCKED

View file

@ -25,7 +25,7 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" 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$
.\"
.Dd July 15, 2000

View file

@ -25,7 +25,7 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" 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$
.\"
.Dd July 15, 2000

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/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$
.Dd May 12, 2000
@ -53,7 +53,6 @@ struct task {
task_fn ta_func; /* タスクハンドラ */
void *ta_context; /* ハンドラの引数 */
};
.Ed
.Ft struct taskqueue *
.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 TASKQUEUE_DECLARE "name"
.Fn TASKQUEUE_DEFINE "name" "taskqueue_enqueue_fn enqueue" "void *context" "init"
.Fn TASKQUEUE_DEFINE_THREAD "name"
.Sh 解説
これらの関数はコードの非同期の実行のための単純なインタフェースを提供します。
.Pp
@ -155,12 +155,13 @@ task
.Va ta_pending
フィールドはクリアされます。
.Pp
2 つのマクロ
.Fn TASKQUEUE_DECLARE "name"
および
3 つのマクロ
.Fn TASKQUEUE_DECLARE "name" ,
.Fn TASKQUEUE_DEFINE "name" "enqueue" "context" "init"
は、グローバルなキューへの参照の宣言およびそのキューの実装の定義の
ために使用されます。
および
+.Fn TASKQUEUE_DEFINE_THREAD "name"
は、グローバルなキューへの参照の宣言、そのキューの実装の定義、
および所有するスレッドを使用するキューを宣言するために使用されます。
.Fn TASKQUEUE_DEFINE
マクロは
.Va name ,
@ -176,6 +177,16 @@ task
.Va init
引数が C のステートメントとして実行されます。
.Pp
.Fn TASKQUEUE_DEFINE_THREAD
マクロはタスクを取り扱う自身が所有するカーネルスレッドで
新しいタスクキューを定義します。
変数
.Vt struct proc *taskqueue_name_proc
はタスクを取り扱うカーネルスレッドを含んで定義されます。
変数
.Vt struct taskqueue *taskqueue_name
はそのキューにタスクを追加するために使用されます。
.Pp
システムは 3 つのグローバルなタスクキュー
.Va taskqueue_swi ,
.Va taskqueue_swi_giant ,

View file

@ -29,7 +29,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/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$
.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
.\" 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$
.\"
.Dd September 10, 1996
@ -103,7 +103,9 @@ struct callout_handle handle = CALLOUT_HANDLE_INITIALIZER(&handle)
.Ft struct callout_handle
です。
.Fn timeout
の呼び出しは古いスタイルで、新しいコードは callout_* 関数を使用するべきです。
の呼び出しは古いスタイルで、新しいコードは
.Fn callout_*
関数を使用するべきです。
.Pp
関数
.Fn callout_handle_init
@ -143,7 +145,9 @@ struct callout_handle handle = CALLOUT_HANDLE_INITIALIZER(&handle)
以前に初期化されたハンドルを伴なわない untimeout の呼び出しの振る舞いは
未定義です。
.Fn untimeout
の呼び出しは古いスタイルで、新しいコードは callout_* 関数を使用するべきです。
の呼び出しは古いスタイルで、新しいコードは
.Fn callout_*
関数を使用するべきです。
.Pp
ハンドルがシステムによって再利用されるので、
両方の呼び出しが同じ関数のポインタおよび引数を使用し、2 番目の呼び出しの前に
@ -201,7 +205,7 @@ timeout (
は、コールアウトが既に進行中の場合にはその完了をウェイトすることを除いて、
.Fn callout_stop
と同一です。
は、そのコールアウトがブロックするかもしれないあらゆるロックを
の関数は、そのコールアウトがブロックするかもしれないあらゆるロックを
保持している間は、決して呼び出されてはなりません。
さもないと結果としてデッドロックします。
.Pp
@ -231,7 +235,8 @@ timeout (
.An George Varghese
.%T "Redesigning the BSD Callout and Timer Facilities"
と名付けられた技術レポートで発表された作業に基づいています。また、
と名付けられた技術レポートで発表された作業に基づいています。
また、
.Fx
への導入のために
.An Justin T. Gibbs

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/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$
.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
.\" 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$
.Dd June 15, 1996
.Dd August 10, 2004
.Dt VSLOCK 9
.Os
.Sh ̾¾Î