Catch up with 5.0-CURRENT-20030419-JPSNAP

Submitted by:	Akira Ikeuchi <a_ikeuchi@mic.mitsumi.co.jp>
This commit is contained in:
Kazuo Horikawa 2003-04-27 19:06:14 +00:00
parent 2d29a49113
commit 7821caa0a5
Notes: svn2git 2020-12-08 03:00:23 +00:00
svn path=/head/; revision=16723
7 changed files with 141 additions and 89 deletions

View file

@ -175,6 +175,7 @@ MLINKS+=getsockopt.2 setsockopt.2
MLINKS+=gettimeofday.2 settimeofday.2
MLINKS+=getuid.2 geteuid.2
MLINKS+=intro.2 errno.2
MLINKS+=jail.2 jail_attach.2
MLINKS+=kqueue.2 kevent.2
MLINKS+=mlock.2 munlock.2
MLINKS+=modnext.2 modfnext.2

View file

@ -30,7 +30,7 @@
.\" SUCH DAMAGE.
.\"
.\" @(#)connect.2 8.1 (Berkeley) 6/4/93
.\" %FreeBSD: src/lib/libc/sys/connect.2,v 1.22 2002/12/19 09:40:24 ru Exp %
.\" %FreeBSD: src/lib/libc/sys/connect.2,v 1.23 2003/04/01 20:25:46 ceri Exp %
.\"
.\" $FreeBSD$
.Dd June 4, 1993
@ -99,6 +99,8 @@
接続が強制的に拒絶されました。
.It Bq Er ENETUNREACH
このホストからそのネットワークに到達できません。
.It Bq Er EHOSTUNREACH
このホストからそのリモートホストに到達できません。
.It Bq Er EADDRINUSE
アドレスが既に使用中です。
.It Bq Er EFAULT

View file

@ -5,10 +5,10 @@
.\"can do whatever you want with this stuff. If we meet some day, and you think
.\"this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp
.\"----------------------------------------------------------------------------
.\"%FreeBSD: src/lib/libc/sys/jail.2,v 1.22 2002/12/18 09:22:30 ru Exp %
.\"%FreeBSD: src/lib/libc/sys/jail.2,v 1.23 2003/04/09 02:55:17 mike Exp %
.\"
.\" $FreeBSD$
.Dd April 28, 1999
.Dd April 8, 2003
.Dt JAIL 2
.Os
.Sh 名称
@ -17,10 +17,12 @@
.Sh ライブラリ
.Lb libc
.Sh 書式
.In sys/types.h
.In sys/param.h
.In sys/jail.h
.Ft int
.Fn jail "struct jail *jail"
.Ft int
.Fn jail_attach "int jid"
.Sh 解説
.Fn jail
システムコールは牢屋をつくり、現在のプロセスをその中に閉じ込めます。
@ -48,10 +50,28 @@ struct jail {
.Pp
.Dq Li ip_number
は牢屋に割り当てる IP 番号を設定します。
.Pp
.Fn jail_attach
システムコールは、
.Va jid
によって識別される既存の jail を現在のプロセスにアタッチします。
.Sh 戻り値
成功の場合には、
.Fn jail
は jail 識別子 (JID) と呼ばれる負ではない整数を返します。
失敗の場合には -1 を返し、そのエラーを示すために
.Va errno
を設定します。
.Pp
成功の場合には、
.Fn jail_attach
は 0 を返します。
失敗の場合には -1 を返し、そのエラーを示すために
.Va errno
を設定します。
.Sh 牢屋?
プロセスは一度牢屋に入れられると、それ自身とその子孫は牢屋から
逃れることはできません。
既存の牢屋にプロセスを追加することはできません。
.Pp
牢屋の中では "スーパユーザ" の概念はとても弱まっています。
一般に全体が牢屋の中にあるわけではないものを牢屋の中から台無しにすることは
@ -96,6 +116,10 @@ IP
システムコールは
.Fx 4.0
で登場しました。
.Fn jail_attach
システムコールは
.Fx 5.1
で登場しました。
.Sh 作者
jail の機能は
.An Poul-Henning Kamp

View file

@ -30,7 +30,7 @@
.\" SUCH DAMAGE.
.\"
.\" @(#)madvise.2 8.1 (Berkeley) 6/9/93
.\" %FreeBSD: src/lib/libc/sys/madvise.2,v 1.28 2003/01/06 23:20:55 trhodes Exp %
.\" %FreeBSD: src/lib/libc/sys/madvise.2,v 1.29 2003/03/31 21:09:56 wes Exp %
.\"
.\" WORD: revert 書き戻す(dirty なページをファイルシステムに書き込む)[madvise.2]
.\" WORD: physically backing store 物理的バッキングストア
@ -126,6 +126,12 @@ MADV_NOSYNC
領域は、コアファイルに含まれません。
.It Dv MADV_CORE
コアファイルの領域を含みます。
.It Dv MADV_PROTECT
スワップ空間を使い果たした時に、
このプロセスは終了させられるべきではないことを、VM システムに通知します。
プロセスはスーパユーザの特権を持っていなければなりません。
これは、システムが適切に機能するために実行され続けなければならない
プロセス群で、思慮分別を持って使用されるべきです。
.El
.Sh 戻り値
.Rv -std madvise
@ -138,6 +144,9 @@ MADV_NOSYNC
引数と
.Fa len
引数で指定された仮想アドレス範囲が有効ではありません。
.It Bq Er EPERM
.Dv MADV_PROTECT
が指定され、プロセスがスーパユーザの特権を持っていません。
.El
.Sh 関連項目
.Xr mincore 2 ,

View file

@ -22,10 +22,10 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.\" %FreeBSD: src/share/man/man9/BUS_SETUP_INTR.9,v 1.11 2002/01/09 11:43:45 mpp Exp %
.\" %FreeBSD: src/share/man/man9/BUS_SETUP_INTR.9,v 1.12 2003/03/29 05:11:14 imp Exp %
.\"
.\" $FreeBSD$
.Dd April 2, 2000
.Dd March 28, 2003
.Dt BUS_SETUP_INTR 9
.Os
.Sh 名称
@ -82,6 +82,16 @@
.Fa arg
の値を伴なって呼び出されます。
.Pp
.Fa cookiep
引数は、
割り込みの確立が成功した場合に、
.Nm
が書込む親のバスが使用するクッキーである void * 型へのポインタです。
ドライバ作成者は、このクッキーが 0 ではないことを仮定することが出来ます。
nexus ドライバは失敗時に
.Fa cookiep
に 0 を書込みます。
.Pp
割り込みハンドラは、
.Fn BUS_TEARDOWN_INTR
によってデタッチされます。

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.12 2001/10/01 16:09:24 ru Exp %
.\" %FreeBSD: src/share/man/man9/bus_alloc_resource.9,v 1.13 2003/03/29 05:09:15 imp Exp %
.\"
.\" $FreeBSD$
.Dd May 18, 2000
@ -48,7 +48,7 @@
これは資源管理関数群への簡単なインタフェースです。
親のメソッドテーブルを通る間接的な方法を隠蔽します。
この関数は、一般的にアタッチ時に呼び出されるべきですが、
(競合状態の場合を除いて) 決してその前に呼び出してはなりません。
(幾つかの稀な場合を除いて) 決してその前に呼び出してはなりません。
.Pp
引数は以下の通りです。
.Bl -item
@ -86,17 +86,24 @@ PCI
および
.Fa end
は資源の開始/終了アドレスです。
start に
.Fa start
.Dv 0
の値を end に
を、
.Fa end
.Dv ~0
の値を指定した場合には、バスのためのデフォルト値が計算されます。
を、
.Fa count
.Dv 1
を指定した場合には、バスのためのデフォルト値が計算されます。
.It
.Fa count
は資源の大きさで、例えば、入出力ポートの大きさです
(これは大抵、PCI 上では
(これは大抵
.Dv 1
、ISA および PCCARD 上ではデバイス依存です)。
すが、幾つかのデバイスはこれを上書きします)。
.Fa start
および
.Fa end
@ -113,7 +120,7 @@ start
.It Dv RF_ALLOCATED
資源は既に予約されています。
資源は引続き
.Xr rman_activate_resource 9
.Xr bus_activate_resource 9
で活性化される必要があります。
.It Dv RF_ACTIVE
不可分に、資源を活性化します。
@ -149,6 +156,7 @@ pccard/cardbus
0ul, ~0ul, 1, RF_ACTIVE | RF_SHAREABLE);
.Ed
.Sh 関連項目
.Xr bus_activate_resource 9 ,
.Xr bus_release_resource 9 ,
.Xr device 9 ,
.Xr driver 9

View file

@ -33,17 +33,21 @@
.\" 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.29 2003/02/05 14:00:46 charnier
.\" %FreeBSD: src/share/man/man9/malloc.9,v 1.32 2003/04/10 10:18:56 harti Exp %
.\" $FreeBSD$
.\"
.Dd June 16, 1996
.Dd April 9, 2003
.Dt MALLOC 9
.Os
.Sh 名称
.Nm malloc ,
.Nm MALLOC ,
.Nm free ,
.Nm FREE
.Nm FREE ,
.Nm realloc ,
.Nm reallocf ,
.Nm MALLOC_DEFINE ,
.Nm MALLOC_DECLARE
.Nd カーネルメモリマネージメントルーチン
.Sh 書式
.In sys/types.h
@ -58,6 +62,11 @@
.Fn realloc "void *addr" "unsigned long size" "struct malloc_type *type" "int flags"
.Ft void *
.Fn reallocf "void *addr" "unsigned long size" "struct malloc_type *type" "int flags"
.Fn MALLOC_DECLARE "type"
.In sys/param.h
.In sys/malloc.h
.In sys/kernel.h
.Fn MALLOC_DEFINE "type" "shortdesc" "longdesc"
.Sh 解説
.Fn malloc
関数はカーネルアドレス空間の初期化されていないメモリを
@ -145,46 +154,22 @@ free((addr), type)
.Dv NULL
を返すようにします。
通常は、
他のプロセスによるリソースの解放を待つためにスリープ状態にされます。
このフラグがセットされていれば、
.Fn malloc
はブロックせずに
.Dv NULL
を返します。
割り込みコンテキストでの動作時には
.Dv M_NOWAIT
が 0 に定義されているということは、ブロッキング操作がデフォルトであることを
意味することに注意してください。
また、割り込みコンテキストでの動作時には
.Dv M_NOWAIT
が必要であることにも注意してください。
.Pp
プログラマは、
.Fn malloc
フラグ
.Dv M_NOWAIT
.Xr mbuf 9
の割り当てフラグ
.Dv M_DONTWAIT
を、混乱しないようにするべきです。
後者は
.Fn malloc
にとって有効ではない引数です。
が要求されることに注意してください。
.It Dv M_WAITOK
はリソースを待つことが OK であることを示します。
これは都合の悪いことに 0 として定義されていますので、
この値を直接比較すること、またはフラグとして AND をとろうとすることを
決して行なわないように注意が払われるべきです。
デフォルトの操作はメモリ割り当てが成功するまでブロックされます。
.Dv M_NOWAIT
この要求がすぐに満たされることが出来ない場合には、現在のプロセスは、
他のプロセスのよってリソースが開放されることを待つために、
スリープ状態に置かれます。
.Dv M_WAITOK
が指定されると
.Fn malloc ,
.Fn realloc ,
.Fn reallocf
関数は単に
関数は
.Dv NULL
を返すことが出来ま
を返すことが出来ません。
.It Dv M_USE_RESERVE
要求されたメモリを獲得するために、
システムがリザーブ領域を使ってよいことを示します。
@ -194,6 +179,12 @@ free((addr), type)
そのため、新たなプログラミングでは使用されない様にするべきです。
.El
.Pp
厳密に
.Dv M_WAITOK
または
.Dv M_NOWAIT
のどちらかが指定されなければなりません。
.Pp
引数
.Fa type
はメモリの利用方法の統計をとるためと、
@ -208,7 +199,7 @@ free((addr), type)
.Fn MALLOC_DEFINE
マクロを通じて
.Va malloc_type_t
.Va struct malloc_type_t
typedef を使用して定義されます。
.Bd -literal -offset indent
/* sys/something/foo_extern.h */
@ -226,6 +217,14 @@ MALLOC_DEFINE(M_FOOBUF, "foobuffers",
MALLOC(buf, struct foo_buf *, sizeof *buf, M_FOOBUF, M_NOWAIT);
.Ed
.Pp
.Fn MALLOC_DEFINE
を使用するためには、
.Aq sys/param.h
.Aq ( sys/types.h
の代わりに) および
.Aq sys/kernel.h
をインクルードしなければなりません。
.Sh 戻り値
.Fn malloc ,
.Fn realloc ,
@ -244,15 +243,46 @@ MALLOC(buf, struct foo_buf *, sizeof *buf, M_FOOBUF, M_NOWAIT);
この動作に依存してはなりませんが、
この情報がメモリ使用効率の最適化に有用かもしれません。
.Pp
以上に記載された malloc のフラグは、望まれていない結果を引き起こすため、
プログラマは malloc フラグの
.Dv M_NOWAIT
および
.Dv M_WAITOK
と、
.Xr mbuf 9
のルーチンと一緒に使用されるべき
.Em ではありません
フラグの
.Dv M_DONTWAIT
および
.Dv M_TRYWAIT
を混乱しないように注意するべきです。
.Sh ロックすることの考慮
.Fn malloc ,
.Fn realloc
および
.Fn reallocf
は高速割り込みハンドラから呼び出されることは出来ません。
スレッド化された割り込みから呼び出される時には、
.Ar flag
.Dv M_NOWAIT
を含んでいなければなりません。
.Pp
ジャイアントロックではなく mutex が保持されている間は、
.Fn malloc ,
.Fn realloc
および
.Fn reallocf
.Dv M_WAITOK
付きで呼び出されてはなりません。
.Fn free
が呼び出される時には、ジャイアントロックが保持されていても
保持されていなくても構いません。
.Pp
.Xr vnode 9
インタロックを保持している時の
.Fn malloc
または
.Dv ( M_NOWAIT
付であっても) または
.Fn free
への全ての呼出しは、VM オブジェクトと vnode の相互獲得のために、
LOR (ロック順序の逆転) を引き起こします。
@ -260,7 +290,7 @@ LOR (
.Xr vmstat 8 ,
.Xr vnode 9
.Sh 診断
.Dv DIAGNOSTIC
.Dv INVARIANTS
コンフィギュレーションオプションを付けてコンパイルされたカーネルは、
割り当てられた領域以外への書き込みや
.Fn malloc
@ -268,35 +298,3 @@ LOR (
.Fn free
関数の不均衡な呼び出しなどにより生じたメモリ不正の検出を試みます。
一貫性チェックの失敗はパニックまたはシステムコンソールメッセージを出力します。
.Bl -bullet -offset indent -compact
.Pp
.It
panic:
.Dq malloc: bogus type
.It
panic:
.Dq malloc: allocation too large
.It
panic:
.Dq malloc: wrong bucket
.It
panic:
.Dq malloc: lost data
.It
panic:
.Dq free: address 0x%x out of range
.It
panic:
.Dq free: type %d out of range
.It
panic:
.Dq free: unaligned addr Aq description of object
.It
panic:
.Dq free: item modified
.It
panic:
.Dq free: multiple free[s]
.It
.Dq Data modified on freelist: Aq description of object
.El