Catch up with 5.0-CURRENT-20021105-JPSNAP

Submitted by:	Akira Ikeuchi <yr6a-ikuc@asahi-net.or.jp>
This commit is contained in:
Kazuo Horikawa 2003-01-06 05:41:16 +00:00
parent 35e1829141
commit 8d9a34f82a
Notes: svn2git 2020-12-08 03:00:23 +00:00
svn path=/head/; revision=15550
6 changed files with 425 additions and 234 deletions

View file

@ -1,5 +1,5 @@
.\"- .\"-
.\" Copyright (c) 1999, 2000 Robert N. M. Watson .\" Copyright (c) 1999-2001 Robert N. M. Watson
.\" 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,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/acl.9,v 1.2.2.4 2001/12/17 11:30:18 ru Exp % .\" %FreeBSD: src/share/man/man9/acl.9,v 1.11 2002/05/29 17:45:44 ru Exp $
.\" .\"
.\" $FreeBSD$ .\" $FreeBSD$
.Dd December 23, 1999 .Dd December 23, 1999
@ -37,55 +37,8 @@
.In sys/vnode.h .In sys/vnode.h
.In sys/acl.h .In sys/acl.h
.Pp .Pp
.Bd -literal カーネルコンフィギュレーションファイルの中に、
typedef int acl_type_t; .Cd "options UFS_ACL"
typedef int acl_tag_t;
typedef mode_t acl_perm_t;
struct acl_entry {
acl_tag_t ae_tag;
uid_t ae_id;
acl_perm_t ae_perm;
};
typedef struct acl_entry *acl_entry_t;
struct acl {
int acl_cnt;
struct acl_entry acl_entry[ACL_MAX_ENTRIES];
};
typedef struct acl *acl_t;
/*
* acl_entry_t の a_tag に有効な値
*/
#define ACL_USER_OBJ 0x00000001
#define ACL_USER 0x00000002
#define ACL_GROUP_OBJ 0x00000004
#define ACL_GROUP 0x00000008
#define ACL_MASK 0x00000010
#define ACL_OTHER 0x00000020
#define ACL_OTHER_OBJ ACL_OTHER
/*
* a_type_t 引数に有効な値
*/
#define ACL_TYPE_ACCESS 0x00000000
#define ACL_TYPE_DEFAULT 0x00000001
#define ACL_TYPE_AFS 0x00000002
#define ACL_TYPE_CODA 0x00000003
#define ACL_TYPE_NTFS 0x00000004
#define ACL_TYPE_NWFS 0x00000005
/*
* a_perm フィールドに可能なフラグ
*/
#define ACL_PERM_EXEC 0x0001
#define ACL_PERM_WRITE 0x0002
#define ACL_PERM_READ 0x0004
#define ACL_PERM_NONE 0x0000
#define ACL_PERM_BITS (ACL_PERM_EXEC | ACL_PERM_WRITE | ACL_PERM_READ)
#define ACL_POSIX1E_BITS (ACL_PERM_EXEC | ACL_PERM_WRITE | ACL_PERM_READ)
.Ed
.Sh 解説 .Sh 解説
アクセス制御リスト、すなわち ACL は、 アクセス制御リスト、すなわち ACL は、
ファイルおよびディレクトリを表現する vnode に対する権限を、 ファイルおよびディレクトリを表現する vnode に対する権限を、
@ -98,20 +51,158 @@ vnode
関連付けられる 0 個以上の ACL を持つことが可能です。 関連付けられる 0 個以上の ACL を持つことが可能です。
それぞれ ACL の名前は、適切な vnode ACL 呼び出し それぞれ ACL の名前は、適切な vnode ACL 呼び出し
.Xr VOP_ACLCHECK 9 , .Xr VOP_ACLCHECK 9 ,
.Xr VOP_GETACL 9 , .Xr VOP_GETACL 9
および
.Xr VOP_SETACL 9 .Xr VOP_SETACL 9
.Fa type .Fa type
フィールドを使用して指定されます。 フィールドを使用して指定されます。
.Pp .Pp
現在は、個々の ACL はカーネル内で固定サイズの ACL 構造体によって表現されます。 現在は、個々の ACL は以下に定義されるカーネル内で固定サイズの
.Vt acl
構造体によって表現されます。
.Bd -literal -offset indent
struct acl {
int acl_cnt;
struct acl_entry acl_entry[ACL_MAX_ENTRIES];
};
.Ed
.Pp
ACL は、ACL エントリの固定サイズ配列で構成されます。 ACL は、ACL エントリの固定サイズ配列で構成されます。
各 ACL エントリは、 各 ACL エントリは、
パーミッションの組、主要な名前空間、主要な識別子から構成されます。 パーミッションの組、主要な名前空間、主要な識別子から構成されます。
結びつけられた acl_cnt フィールドの値に依存して、 .Pp
これらの 0 個以上のエントリが "定義" されることが出来ます。 個別の ACL エントリは、以下のメンバを持つ構造体の
.Vt acl_entry_t
型です。
.Bl -tag -width 2n
.It Vt acl_tag_t Va ae_tag
以下は
.Va ae_tag
に設定されるべき ACL の型の定義のリストです。
.Pp
.Bl -tag -width ".Dv ACL_UNDEFINED_FIELD" -offset indent -compact
.It Dv ACL_UNDEFINED_FIELD
未定義の ACL 型。
.It Dv ACL_USER_OBJ
実効ユーザ ID がファイルの所有者のユーザ ID と
一致するプロセスのための任意のアクセス権。
.It Dv ACL_USER
実効ユーザ ID が ACL エントリの権限と
一致するプロセスのための任意のアクセス権。
.It Dv ACL_GROUP_OBJ
実効グループ ID または全ての追加のグループがファイルの所有者のグループ ID と
一致するプロセスのための任意のアクセス権。
.It Dv ACL_GROUP
実効グループ ID または全ての追加のグループが ACL エントリの権限と
一致するプロセスのための任意のアクセス権。
.It Dv ACL_MASK
ファイルグループクラスの中のプロセスが許可されることができる
任意のアクセス権の最高限度。
.It Dv ACL_OTHER
その他の ACL エントリによって保護されていない
プロセスのための任意のアクセス権。
.It Dv ACL_OTHER_OBJ
.Dv ACL_OTHER
と同じです。
各々の ACL エントリは、厳密に、1 つの
.Dv ACL_USER_OBJ
と 1 つの
.Dv ACL_GROUP_OBJ
と 1 つの
.Dv ACL_OTHER
を含まなければなりません。
.Dv ACL_USER ,
.Dv ACL_GROUP
または
.Dv ACL_OTHER
が存在する場合には、厳密に 1 つの
.Dv ACL_MASK
エントリが存在するべきです。
.El
.It Vt uid_t Va ae_id
この ACL がアクセスパーミションを記述しているユーザのユーザ ID。
.It Vt acl_perm_t Va ae_perm
このフィールドは、この ACL に適合するプロセスが関連したファイルの
アクセスのために、どの種類のアクセスかを定義します。
.Bl -tag -width ".Dv ACL_POSIX1E_BITS"
.It Dv ACL_EXECUTE
プロセスは関連したファイルの実行が可能です。
.It Dv ACL_WRITE
プロセスは関連したファイルへの書込みが可能です。
.It Dv ACL_READ
プロセスは関連したファイルからの読込みが可能です。
.It Dv ACL_PERM_NONE
プロセスは関連したファイルへの読込み、書込みまたは実行のパーミションを
所有していません。
.El
.El
.Pp
.Sh 実装に関する注
.Bd -literal
typedef mode_t *acl_permset_t;
/* 内部の ACL 構造体 */
struct acl {
int acl_cnt;
struct acl_entry acl_entry[ACL_MAX_ENTRIES];
};
/* 外部の ACL 構造体 */
struct acl_t_struct {
struct acl ats_acl;
int ats_cur_entry;
};
typedef struct acl_t_struct *acl_t;
/*
* ae_tag フィールドに有効な値
*/
#define ACL_UNDEFINED_TAG 0x00000000
#define ACL_USER_OBJ 0x00000001
#define ACL_USER 0x00000002
#define ACL_GROUP_OBJ 0x00000004
#define ACL_GROUP 0x00000008
#define ACL_MASK 0x00000010
#define ACL_OTHER 0x00000020
#define ACL_OTHER_OBJ ACL_OTHER
/*
* acl_type_t 引数のために有効な値
*/
#define ACL_TYPE_ACCESS 0x00000000
#define ACL_TYPE_DEFAULT 0x00000001
#define ACL_TYPE_AFS 0x00000002
#define ACL_TYPE_CODA 0x00000003
#define ACL_TYPE_NTFS 0x00000004
#define ACL_TYPE_NWFS 0x00000005
/*
* ae_perm フィールドに可能なフラグ
*/
#define ACL_EXECUTE 0x0001
#define ACL_WRITE 0x0002
#define ACL_READ 0x0004
#define ACL_PERM_NONE 0x0000
#define ACL_PERM_BITS (ACL_EXECUTE | ACL_WRITE | ACL_READ)
#define ACL_POSIX1E_BITS (ACL_EXECUTE | ACL_WRITE | ACL_READ)
/*
* acl_get_entry() のための entry_id に可能な値
*/
#define ACL_FIRST_ENTRY 0
#define ACL_NEXT_ENTRY 1
/*
* ae_id フィールドの中の未定義の値
*/
#define ACL_UNDEFINED_ID ((uid_t)-1)
.Ed
.Sh 関連項目 .Sh 関連項目
.Xr acl 3 ,
.Xr vaccess_acl_posix1e 9 ,
.Xr VFS 9 , .Xr VFS 9 ,
.Xr vaccess 9 ,
.Xr VOP_ACLCHECK 9 , .Xr VOP_ACLCHECK 9 ,
.Xr VOP_GETACL 9 , .Xr VOP_GETACL 9 ,
.Xr VOP_SETACL 9 .Xr VOP_SETACL 9

View file

@ -1,5 +1,5 @@
.\"- .\"-
.\" Copyright (c) 1999 Robert N. M. Watson .\" Copyright (c) 1999, 2000, 2001 Robert N. M. Watson
.\" 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,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/extattr.9,v 1.1.2.4 2001/12/17 11:30:18 ru Exp % .\" %FreeBSD: src/share/man/man9/extattr.9,v 1.10 2002/05/16 05:21:58 trhodes Exp %
.\" .\"
.\" $FreeBSD$ .\" $FreeBSD$
.Dd December 23, 1999 .Dd December 23, 1999
@ -42,7 +42,23 @@
この追加のデータのセマンティクスは、"name=value" ("名前=値") のペアで、 この追加のデータのセマンティクスは、"name=value" ("名前=値") のペアで、
名前は定義されても定義されなくても良く、定義されていれば、0 バイト以上の 名前は定義されても定義されなくても良く、定義されていれば、0 バイト以上の
任意のバイナリデータに関連付けられます。 任意のバイナリデータに関連付けられます。
このデータの読み込みは、 拡張属性の名前は名前空間の集合の中に存在します。
拡張属性上の個々の操作は、操作を参照するために名前空間を供給することが
要求されています。
複数の名前空間の中に同じ名前が存在する場合には、その名前に関連付けられた
拡張属性は、独立して格納され、操作されます。
次の 2 つの名前空間が普遍的に定義されていますが、個々のファイルシステムは
追加の名前空間を実装することが可能で、またこれら
.Dv EXTATTR_NAMESPACE_USER ,
.Dv EXTATTR_NAMESPACE_SYSTEM
の名前空間を実装しないことも可能です。
これらの属性のセマンティクスは以下を意図しています。
ユーザ属性データは、ファイルまたはディレクトリの中のデータに関連付けられた
通常の任意および必須の保護によって、保護されます。
システム属性データは、これらの属性への直接的なアクセスまたは操作には
適切な特権が要求されることによって、保護されます。
.Pp
拡張属性データの読み込みは、
.Xr VOP_READ 9 .Xr VOP_READ 9
の形式で、明示されたメタデータの連続した領域を返します。 の形式で、明示されたメタデータの連続した領域を返します。
一方、書込みは、 一方、書込みは、
@ -58,7 +74,7 @@
.Pp .Pp
拡張属性は、ヌルで終端された文字列を使用して名前付けされます。 拡張属性は、ヌルで終端された文字列を使用して名前付けされます。
名前は大文字と小文字を区別するかもしれませんし、しないかもしれませんが、 名前は大文字と小文字を区別するかもしれませんし、しないかもしれませんが、
これはファイルシステムのセマンティクスに依存します。 これは潜在的なファイルシステムのセマンティクスに依存します。
適切な vnode 拡張属性の呼び出しは、 適切な vnode 拡張属性の呼び出しは、
.Xr VOP_GETEXTATTR 9 .Xr VOP_GETEXTATTR 9
および および
@ -66,9 +82,20 @@
です。 です。
.Sh 関連項目 .Sh 関連項目
.Xr VFS 9 , .Xr VFS 9 ,
.Xr VFS_EXTATTRCTL 9 ,
.Xr VOP_GETEXTATTR 9 , .Xr VOP_GETEXTATTR 9 ,
.Xr VOP_SETEXTATTR 9 .Xr VOP_SETEXTATTR 9
.Sh 作者 .Sh 作者
このマニュアルページは このマニュアルページは
.An Robert Watson .An Robert Watson
が書きました。 が書きました。
.Sh バグ
現在は拡張属性アクセスインタフェースは、属性のトータルの大きさを返せないか、
呼び出し側によって提供されたバッファ空間が全ての利用可能なデータを保持する
ためには不足であることを示します。
加えて、このインタフェースは現在の利用可能な属性の組を取り出す仕組みを
提供していません。既に、
.Dv NULL
の属性名を与えることで、渡されたファイルまたはディレクトリのための
定義された属性のリストをもたらすべきであると提案されていますが、
現在は実装されていません。

View file

@ -22,28 +22,37 @@
.\" 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/make_dev.9,v 1.2.2.3 2001/12/17 11:30:18 ru Exp % .\" %FreeBSD: src/share/man/man9/make_dev.9,v 1.12 2002/02/11 01:21:29 dd Exp %
.\" .\"
.\" $FreeBSD$ .\" $FreeBSD$
.Dd September 25, 1999 .Dd May 27, 2001
.Os .Os
.Dt MAKE_DEV 9 .Dt MAKE_DEV 9
.Sh 名称 .Sh 名称
.Nm make_dev , .Nm make_dev ,
.Nm destroy_dev .Nm make_dev_alias ,
.Nd 新しいデバイスのための dev_t の作成と削除 .Nm destroy_dev ,
.Nm dev_depends
.Nd デバイスのための
.Vt dev_t
および DEVFS 登録の管理
.Sh 書式 .Sh 書式
.In sys/types.h .In sys/param.h
.In sys/conf.h .In sys/conf.h
.Ft dev_t .Ft dev_t
.Fn make_dev "struct cdevsw *cdevsw" "int minor" "uid_t uid" "gid_t gid" "int perms" "char *fmt" ... .Fn make_dev "struct cdevsw *cdevsw" "int minor" "uid_t uid" "gid_t gid" "int perms" "const char *fmt" ...
.Ft dev_t
.Fn make_dev_alias "dev_t pdev" "const char *fmt" ...
.Ft void .Ft void
.Fn destroy_dev "dev_t dev" .Fn destroy_dev "dev_t dev"
.Ft void
.Fn dev_depends "dev_t pdev" "dev_t cdev"
.Sh 解説 .Sh 解説
.Fn make_dev .Fn make_dev
関数は新しいデバイスのための 関数は新しいデバイスのための
.Fa dev_t .Fa dev_t
構造体を作成します。 構造体を作成します。
DEVFS が利用可能の場合には、新しいデバイスの存在も通知されます。
そのデバイスは そのデバイスは
.Va uid .Va uid
によって所有され、 によって所有され、
@ -80,16 +89,49 @@
#endif #endif
.Ed .Ed
.Pp .Pp
.Fn make_dev_alias
関数は
.Fn make_dev
から返された
.Ft dev_t
をとり、このデバイスのための別の名前 (別名) を作成します。
.Fn make_dev
の呼出しの前の
.Fn make_dev_alias
の呼出しは、誤りです。
.Pp
.Fn destroy_dev .Fn destroy_dev
関数は、 関数は
.Fn make_dev .Fn make_dev
から返された から返された
.Fa dev_t .Fa dev_t
をとり、そのデバイスの登録を削除します。 をとり、そのデバイスの登録を削除します。
.Fn make_dev_alias
で作成されたデバイスで
.Fn destroy_dev
を呼出さないでください。
.Pp
.Fn dev_depends
関数は 2 つのデバイス間の親子関係を確立します。
このネット効果は、親デバイスの
.Fn destroy_dev
は、もしあれば、結果としてその子デバイスの破壊に終わります。
1 つのデバイスは同時に親にも子にもなれ、
そのため、完全な階層構造を構築することが可能です。
.Sh 歴史 .Sh 歴史
.Fn make_dev .Fn make_dev
および および
.Fn destroy_dev .Fn destroy_dev
関数は 関数は
.Fx 4.0 .Fx 4.0
で初めて登場しました。 ではじめて登場しました。
関数
.Fn make_dev_alias
.Fx 4.1
ではじめて登場しました。
関数
.Fn dev_depends
.Fx 5.0 .
ではじめて登場しました。

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.7.2.4 2001/12/17 11:30:18 ru Exp % .\" %FreeBSD: src/share/man/man9/mi_switch.9,v 1.16 2002/08/13 14:51:17 ru Exp %
.\" .\"
.\" $FreeBSD$ .\" $FreeBSD$
.Dd November 24, 1996 .Dd November 24, 1996
@ -42,36 +42,40 @@
.Os .Os
.Sh 名称 .Sh 名称
.Nm mi_switch , .Nm mi_switch ,
.Nm cpu_switch .Nm cpu_switch ,
.Nd 別のプロセスコンテキストへのスイッチ .Nm cpu_throw
.Nd 別のスレッドコンテキストへのスイッチ
.Sh 書式 .Sh 書式
.In sys/param.h .In sys/param.h
.In sys/proc.h .In sys/proc.h
.Ft void .Ft void
.Fn mi_switch "void" .Fn mi_switch "void"
.Ft void .Ft void
.Fn cpu_switch "struct proc *p" .Fn cpu_switch "void"
.Ft void
.Fn cpu_throw "void"
.Sh 解説 .Sh 解説
.Fn mi_switch .Fn mi_switch
関数はマシン非依存なプロセスコンテキストスイッチの前処理を実装しています。 関数はマシン非依存なスレッドコンテキストスイッチの前処理を実装しています。
横取り不可能なカーネルモード実行の方針の結果として、カーネル内の数少ない 横取り不可能なカーネルモード実行の方針の結果として、カーネル内の数少ない
区別された場所からのみ呼び出されます。 区別された場所からのみ呼び出されます。
3 つの主な いくつかの主な
.Nm .Nm
の使用は以下に挙げられます。 の使用は以下に挙げられます。
.Bl -enum -offset indent .Bl -enum -offset indent
.It .It
.Xr sleep 9 .Xr sleep 9 ,
および
.Xr tsleep 9 .Xr tsleep 9
および
.Xr msleep
の中から、あるリソースが利用可能になるのを待つために の中から、あるリソースが利用可能になるのを待つために
現在のプロセスが自発的に CPU を放棄するとき。 現在のスレッドが自発的に CPU を放棄するとき。
.It .It
トラップ (例えば、システムコール、デバイス割り込み) の取り扱いの後で、 トラップ (例えば、システムコール、デバイス割り込み) の取り扱いの後で、
カーネルがユーザモード実行のために戻る準備のとき。 カーネルがユーザモード実行のために戻る準備のとき。
通常この場合は、現在のプロセスのシグナル配置の中の変化の検出の後で 通常この場合は、現在のプロセスのシグナル配置の中の変化の検出の後で
マシン依存のトラップハンドリングコードによって取り扱われるか、 マシン依存のトラップハンドリングコードによって取り扱われるか、
より高い優先度のプロセスが実行可能になったかもしれないときです。 より高い優先度のスレッドが実行可能になったかもしれないときです。
後者のイベントはマシン定義の 後者のイベントはマシン定義の
.Fn need_resched .Fn need_resched
の呼び出しによるマシン非依存のスケジューリングルーチンによって伝達されます。 の呼び出しによるマシン非依存のスケジューリングルーチンによって伝達されます。
@ -79,11 +83,21 @@
シグナルハンドラコード シグナルハンドラコード
.Xr ( issignal 9 .Xr ( issignal 9
を参照) の中で、プロセスを停止させるシグナルが届けられた場合。 を参照) の中で、プロセスを停止させるシグナルが届けられた場合。
.It
スレッドが
.Xr thread_exit 9
の中で終了し、プロセッサの制御が次の実行可能のスレッドに渡されることが
可能なとき。
.It
.Xr thread_suspend_check 9
中で、全体としてのプロセスの停止状態のために、
スレッドが実行を停止する必要がある
場合。
.El .El
.Pp .Pp
.Fn mi_switch .Fn mi_switch
はプロセス構造体の中に現在のプロセスが実行された時間量を記録して、 はプロセス構造体の中に現在のプロセスが実行された時間量を記録して、
そのプロセスに割当てられている CPU の時間リミット そのスレッドに割当てられている CPU の時間リミット
.Xr ( getrlimit 2 .Xr ( getrlimit 2
を参照) に照らしてこの値を検査します。 を参照) に照らしてこの値を検査します。
ソフトリミットの超過はそのプロセスに ソフトリミットの超過はそのプロセスに

View file

Internal server error - The gay git

500

Internal server error

Forgejo version: 9.0.3

@ -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