Some section 9 manual pages based on RELENG_4

Submitted by:	saharu ikeuchi <saharin@cool.email.ne.jp>
Reviewed by:	Motomichi Matsuzaki <mzaki@e-mail.ne.jp>
This commit is contained in:
Kazuo Horikawa 2000-10-17 02:24:10 +00:00
parent cad01dc051
commit 7ee350647d
Notes: svn2git 2020-12-08 03:00:23 +00:00
svn path=/head/; revision=8155
31 changed files with 3377 additions and 0 deletions

View file

@ -0,0 +1,59 @@
.\" -*- nroff -*-
.\"
.\" Copyright (c) 1998 Doug Rabson
.\"
.\" All rights reserved.
.\"
.\" This program is free software.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\" notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\" notice, this list of conditions and the following disclaimer in the
.\" documentation and/or other materials provided with the distribution.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY EXPRESS OR
.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
.\" IN NO EVENT SHALL THE DEVELOPERS BE LIABLE FOR ANY DIRECT, INDIRECT,
.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
.\" (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_CONNECT_INTR.9,v 1.3 1999/08/28 00:21:04 peter Exp $
.\"
.Dd June 16, 1998
.Os
.Dt BUS_CONNECT_INTR 9
.Os FreeBSD
.Sh 名称
.Nm BUS_CONNECT_INTR
.Nd 割り込みハンドラの活性化
.Sh 書式
.Fd #include <sys/param.h>
.Fd #include <sys/bus.h>
.Ft int
.Fn BUS_CONNECT_INTR "device_t dev" "void *ih"
.Sh 解説
.Pp
このメソッドは以前に
.Xr BUS_CREATE_INTR 9
によって生成された割り込みハンドラを活性化します。
.Sh 戻り値
成功時には 0 が返され、それ以外の場合は適切なエラーが返されます。
.Sh 関連項目
.Xr BUS_CREATE_INTR 9 ,
.Xr device 9 ,
.Xr driver 9
.Sh バグ
このインターフェイスは恐らく不十分で、変えるべき課題があります。
.Sh 作者
このマニュアルページは
.An Doug Rabson
が書きました。

View file

@ -0,0 +1,68 @@
.\" -*- nroff -*-
.\"
.\" Copyright (c) 1998 Doug Rabson
.\"
.\" All rights reserved.
.\"
.\" This program is free software.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\" notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\" notice, this list of conditions and the following disclaimer in the
.\" documentation and/or other materials provided with the distribution.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY EXPRESS OR
.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
.\" IN NO EVENT SHALL THE DEVELOPERS BE LIABLE FOR ANY DIRECT, INDIRECT,
.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
.\" (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_CREATE_INTR.9,v 1.3 1999/08/28 00:21:05 peter Exp $
.\"
.Dd June 16, 1998
.Os
.Dt BUS_CREATE_INTR 9
.Os FreeBSD
.Sh 名称
.Nm BUS_CREATE_INTR
.Nd 割り込みハンドラの生成
.Sh 書式
.Fd #include <sys/param.h>
.Fd #include <sys/bus.h>
.Ft void *
.Fn BUS_CREATE_INTR "device_t dev" "device_t child" "int irq" "driver_intr_t *intr" "void *arg"
.Sh 解説
.Pp
.Xr BUS_CREATE_INTR 9
メソッドは子デバイスのための割り込みハンドラを生成します。
このハンドラ
.Fa intr
は唯一の引数
.Fa arg
を伴って呼び出されるでしょう。
割り込みハンドラを活性化するための
.Xr BUS_CONNECT_INTR 9
の呼び出しで使用されることのできるハンドルが返されます。
.Sh 戻り値
呼び出し成功時には
割り込みを活性化することができる不明瞭なハンドルが返され、
そうでない場合には NULL が返されます。
.Sh 関連項目
.Xr BUS_CONNECT_INTR 9 ,
.Xr device 9 ,
.Xr driver 9
.Sh バグ
このインターフェイスは恐らく不十分で、変えるべき課題があります。
.Sh 作者
このマニュアルページは
.An Doug Rabson
が書きました。

View file

@ -0,0 +1,60 @@
.\" -*- nroff -*-
.\"
.\" Copyright (c) 1998 Doug Rabson
.\"
.\" All rights reserved.
.\"
.\" This program is free software.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\" notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\" notice, this list of conditions and the following disclaimer in the
.\" documentation and/or other materials provided with the distribution.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY EXPRESS OR
.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
.\" IN NO EVENT SHALL THE DEVELOPERS BE LIABLE FOR ANY DIRECT, INDIRECT,
.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\"
.\" $FreeBSD: src/share/man/man9/BUS_PRINT_CHILD.9,v 1.6 1999/08/28 00:21:05 peter Exp $
.\"
.Dd June 16, 1998
.Os
.Dt BUS_PRINT_CHILD 9
.Os FreeBSD
.Sh 名称
.Nm BUS_PRINT_CHILD
.Nd デバイスについての情報の表示
.Sh 書式
.Fd #include <sys/param.h>
.Fd #include <sys/bus.h>
.Ft int
.Fn BUS_PRINT_CHILD "device_t dev" "device_t child"
.Sh 解説
.Pp
これはデバイスの説明をプリントアウトするシステムのコードから呼び出されます。
それは子デバイスが持っている親とのアタッチメントを記述するべきです。
例えば、TurboLaser のバスはどのノードにアタッチされたかをプリントします。
BUS_PRINT_CHILD によって出力されるメッセージの適切なフォーマット
に関しての更なる情報は
.Xr bus_generic_print_child 9
を見てください。
.Sh 関連項目
.Xr device 9 ,
.Xr driver 9
.Sh 戻り値
出力の文字数です。
.Sh 作者
このマニュアルページは
.An Doug Rabson
が書きました。

View file

@ -0,0 +1,65 @@
.\" -*- nroff -*-
.\"
.\" Copyright (c) 1998 Doug Rabson
.\"
.\" All rights reserved.
.\"
.\" This program is free software.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\" notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\" notice, this list of conditions and the following disclaimer in the
.\" documentation and/or other materials provided with the distribution.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY EXPRESS OR
.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
.\" IN NO EVENT SHALL THE DEVELOPERS BE LIABLE FOR ANY DIRECT, INDIRECT,
.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
.\" (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_READ_IVAR.9,v 1.3 1999/08/28 00:21:05 peter Exp $
.\"
.Dd June 16, 1998
.Os
.Dt BUS_READ_IVAR 9
.Os FreeBSD
.Sh 名称
.Nm BUS_READ_IVAR ,
.Nm BUS_WRITE_IVAR
.Nd バス特有のデバイスインスタンス変数の操作
.Sh 書式
.Fd #include <sys/param.h>
.Fd #include <sys/bus.h>
.Ft int
.Fn BUS_READ_IVAR "device_t dev" "device_t child" "int index" "uintptr_t *result"
.Ft int
.Fn BUS_WRITE_IVAR "device_t dev" "device_t child" "int index" "uintptr_t value"
.Sh 解説
.Pp
これらの 2 つのメソッドは子デバイスのバス特有のインスタンス変数の組
を管理します。
その意図は、異なった型のバスはそれぞれが適当なインスタンス変数
の組(ISA バスにおける port や irq という具合に)を定義するということです。
.Pp
この情報は構造体として子デバイスに与えられることも出来ましたが、
そうすると、全てのドライバを編集し再コンパイルするという作業なしには、
バスが変数を追加したり削除したりすることは困難になります。
この作業はベンダが供給するバイナリのドライバでは不可能かもしれません。
.Sh 戻り値
成功時には 0 が返され、それ以外の場合は適切なエラーが返されます。
.Sh 関連項目
.Xr device 9 ,
.Xr driver 9
.Sh 作者
このマニュアルページは
.An Doug Rabson
が書きました。

View file

@ -0,0 +1,58 @@
.\" -*- nroff -*-
.\"
.\" Copyright (c) 1998 Doug Rabson
.\"
.\" All rights reserved.
.\"
.\" This program is free software.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\" notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\" notice, this list of conditions and the following disclaimer in the
.\" documentation and/or other materials provided with the distribution.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY EXPRESS OR
.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
.\" IN NO EVENT SHALL THE DEVELOPERS BE LIABLE FOR ANY DIRECT, INDIRECT,
.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\"
.\" $FreeBSD: src/share/man/man9/DEVICE_ATTACH.9,v 1.3 1999/08/28 00:21:05 peter Exp $
.\"
.Dd June 16, 1998
.Dt DEVICE_ATTACH 9
.Os FreeBSD
.Sh 名称
.Nm DEVICE_ATTACH
.Nd デバイスのアタッチ
.Sh 書式
.Fd #include <sys/param.h>
.Fd #include <sys/bus.h>
.Ft int
.Fn DEVICE_ATTACH "device_t dev"
.Sh 解説
.Pp
デバイスをシステムにアタッチします。
プローブメソッドは既に呼び出されているでしょうし、
デバイスが存在していると示されているでしょう。
このルーチンはハードウェアの初期化と
その他のシステムリソース(devfs エントリなど)の割り当てを行なうべきです。
.Sh 戻り値
成功時には 0 が返され、それ以外の場合は適切なエラーが返されます。
.Sh 関連項目
.Xr device 9 ,
.Xr DEVICE_DETACH 9 ,
.Xr DEVICE_PROBE 9
.Sh 作者
このマニュアルページは
.An Doug Rabson
が書きました。

View file

@ -0,0 +1,63 @@
.\" -*- nroff -*-
.\"
.\" Copyright (c) 1998 Doug Rabson
.\"
.\" All rights reserved.
.\"
.\" This program is free software.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\" notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\" notice, this list of conditions and the following disclaimer in the
.\" documentation and/or other materials provided with the distribution.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY EXPRESS OR
.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
.\" IN NO EVENT SHALL THE DEVELOPERS BE LIABLE FOR ANY DIRECT, INDIRECT,
.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
.\" (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.3 1999/08/28 00:21:06 peter Exp $
.\"
.Dd June 16, 1998
.Os
.Dt DEVICE_DETACH 9
.Os FreeBSD
.Sh 名称
.Nm DEVICE_DETACH
.Nd デバイスのデタッチ
.Sh 書式
.Fd #include <sys/param.h>
.Fd #include <sys/bus.h>
.Ft int
.Fn DEVICE_DETACH "device_t dev"
.Sh 解説
.Pp
デバイスをデタッチします。
ユーザがドライバソフトウェアを置き換えた場合、またはデバイスが
システムから物理的に切り離されようとしている場合(たとえば pccard デバイス)に、
呼び出されることができます。
.Pp
このメソッドは
.Xr DEVICE_ATTACH 9
メソッドで割り当てられたあらゆるシステムリソースを開放し、
ハードウェアを健全な状態にリセットする
(つまり割り込みをディセーブルするなど)べきです。
.Sh 戻り値
成功時には 0 が返され、それ以外の場合は適切なエラーが返されます。
.Sh 関連項目
.Xr device 9 ,
.Xr DEVICE_ATTACH 9
.Sh 作者
このマニュアルページは
.An Doug Rabson
が書きました。

View file

@ -0,0 +1,86 @@
.\" -*- nroff -*-
.\"
.\" Copyright (c) 1998 Doug Rabson
.\"
.\" All rights reserved.
.\"
.\" This program is free software.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\" notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\" notice, this list of conditions and the following disclaimer in the
.\" documentation and/or other materials provided with the distribution.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY EXPRESS OR
.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
.\" IN NO EVENT SHALL THE DEVELOPERS BE LIABLE FOR ANY DIRECT, INDIRECT,
.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
.\" (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.4 2000/03/02 14:53:52 sheldonh Exp $
.\"
.Dd June 16, 1998
.Os
.Dt DEVICE_PROBE 9
.Os FreeBSD
.Sh 名称
.Nm DEVICE_PROBE
.Nd デバイスの存在のプローブ
.Sh 書式
.Fd #include <sys/param.h>
.Fd #include <sys/bus.h>
.Ft int
.Fn DEVICE_PROBE "device_t dev"
.Sh 解説
.Pp
このデバイスメソッドはデバイスがあるかどうかを知るためにプローブするべきです。
デバイスが存在すれば 0 を、デバイスが見つからなければ ENXIO を返すべきです。
プローブの間にその他のエラー(メモリ割当の失敗など)が起こった場合は、
適切なエラーコードが返されるべきです。
1 つのデバイスに 1 つ以上のドライバが当てはまるような場合のために、
優先順位を返すことができます。
この場合、成功の値は 0 以下の値で、
最も大きな値が最も適切であることを意味します。
失敗の値は正の値で表現され、
通常の UNIX エラーコードが目的に応じて使用されるべきです。
.Pp
ドライバが 0 より小さい成功値を返す場合、
ドライバはそのデバイスにアタッチされるのが
同じドライバであると想定してはいけません。
特に、softc 構造体に格納されたすべての値が
アタッチメソッドで利用可能であると想定してはいけませんし、
また、アタッチメソッドが呼ばれた場合、
プローブの間に割り当てられたあらゆるリソースは開放して
再割り当てしなければなりません。
成功値 0 を返す場合には、
ドライバはそのドライバがアタッチされると想定することができます。
.Pp
バスを実装するデバイスは、
バスに接続されたデバイスの存在をプローブし
それらを子デバイスとして追加するために、
このメソッドを使用するべきです。
このメソッドが
.Xr bus_generic_attach 9
の使用と結合していれば、
子デバイスは自動的にプローブされ、アタッチされるでしょう。
.Sh 戻り値
0 以下の値は成功を表し、0 より大きな値はエラー(errno)を表します。
0 以下の値の時、0 は最高の優先順位を表し、それ以上のプローブは行ないません。
0 未満の値は、低い値程、低い優先順位を表します。
たとえば、-100 は -50 よりも低い優先順位を表します。
.Sh 関連項目
.Xr device 9 ,
.Xr DEVICE_ATTACH 9
.Sh 作者
このマニュアルページは
.An Doug Rabson
が書きました。

View file

@ -0,0 +1,56 @@
.\" -*- nroff -*-
.\"
.\" Copyright (c) 1998 Doug Rabson
.\"
.\" All rights reserved.
.\"
.\" This program is free software.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\" notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\" notice, this list of conditions and the following disclaimer in the
.\" documentation and/or other materials provided with the distribution.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY EXPRESS OR
.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
.\" IN NO EVENT SHALL THE DEVELOPERS BE LIABLE FOR ANY DIRECT, INDIRECT,
.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\"
.\" $FreeBSD: src/share/man/man9/DEVICE_SHUTDOWN.9,v 1.2 1999/08/28 00:21:07 peter Exp $
.\"
.Dd June 16, 1998
.Os
.Dt DEVICE_SHUTDOWN 9
.Os FreeBSD
.Sh 名称
.Nm DEVICE_SHUTDOWN
.Nd システムシャットダウンの間に呼ばれる
.Sh 書式
.Fd #include <sys/param.h>
.Fd #include <sys/bus.h>
.Ft int
.Fn DEVICE_SHUTDOWN "device_t dev"
.Sh 解説
.Pp
システムシャットダウンの間に呼び出され、
ドライバがハードウェアをコンピュータがリブートしても構わない状態にすることを
可能にします。
.Sh 戻り値
成功時には 0 が返され、それ以外の場合にはエラーが返されます。
.Sh 関連項目
.Xr device 9 ,
.Xr DEVICE_ATTACH 9
.Sh 作者
このマニュアルページは
.An Doug Rabson
が書きました。

View file

@ -0,0 +1,75 @@
.\" $OpenBSD: md5.9,v 1.1 1996/04/17 21:40:14 mickey Exp $
.\"
.\" Copyright (c) 1996 Michael Shalayeff
.\" All rights reserved.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\" notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\" notice, this list of conditions and the following disclaimer in the
.\" documentation and/or other materials provided with the distribution.
.\" 3. All advertising materials mentioning features or use of this software
.\" must display the following acknowledgement:
.\" This product includes software developed by Michael Shalayeff
.\" 3. The name of the author may not be used to endorse or promote products
.\" derived from this software without specific prior written permission
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
.\" IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
.\" (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.5 2000/03/02 14:53:52 sheldonh Exp $
.\"
.Dd April 17, 1996
.Dt MD5 9
.Os OpenBSD
.Sh 名称
.Nm MD5 ,
.Nm MD5Init ,
.Nm MD5Transform
.Nd メッセージダイジェストルーチン
.Sh 書式
.Fd #include <sys/types.h>
.Fd #include <sys/md5.h>
.Ft void
.Fn MD5Init "MD5_CTX *buf"
.Ft void
.Fn MD5Transform "u_int32_t buf[4]" "const unsigned char block[64]"
.Sh 解説
.Nm
モジュールは、RSA Data Security, Inc. の MD5 メッセージダイジェスト
アルゴリズム(MD5)を実装しています。
これはデータの 128 ビットの MD5 ダイジェストを生成します。
.Pp
.Bl -hang -width MD5Transformxx
.It Pa MD5Init
ダイジェストを生成するために
.Fn MD5Transform
を使用する直前に呼び出さなくてはなりません。
引数
.Fa buf
は次に続いて呼ばれる
.Fn MD5Transform
ルーチンが生成するダイジェストの格納領域です。
.It Pa MD5Transform
MD5 アルゴリズムの中核で、
引数
.Fa block
で渡される 64 文字の新しいデータの追加を反映するように、
.Fa buf
に格納してある MD5 ハッシュを変更します。
.Sh 著作権
MD5 変換のコードはパブリックドメインに置かれていた Colin Plumb の
実装から得ています。
MD5 暗号化チェックサムは Ronald Rivest が考案し、
RFC 1321 "The MD5 Message Digest Algorithm" に記述されています。

View file

@ -0,0 +1,67 @@
MAN9 = BUS_CONNECT_INTR.9\
BUS_CREATE_INTR.9\
BUS_PRINT_CHILD.9\
BUS_READ_IVAR.9\
DEVICE_ATTACH.9\
DEVICE_DETACH.9\
DEVICE_PROBE.9\
DEVICE_SHUTDOWN.9\
MD5.9\
VFS.9\
bus_generic_attach.9\
bus_generic_detach.9\
bus_generic_map_intr.9\
bus_generic_print_child.9\
bus_generic_read_ivar.9\
bus_generic_shutdown.9\
copy.9\
fetch.9\
free.9\
inittodr.9\
intro.9\
malloc.9\
panic.9\
physio.9\
resettodr.9\
spl.9\
store.9\
style.9\
uio.9\
vslock.9
MLINKS+=BUS_READ_IVAR.9 BUSWRITE_IVAR.9
MLINKS+=malloc.9 FREE.9
MLINKS+=malloc.9 MALLOC.9
MLINKS+=MD5.9 MD5Init.9
MLINKS+=MD5.9 MD5Transform.9
MLINKS+=bus_generic_read_ivar.9 bus_generic_write_ivar.9
MLINKS+=copy.9 copyin.9
MLINKS+=copy.9 copyinstr.9
MLINKS+=copy.9 copyout.9
MLINKS+=copy.9 copystr.9
MLINKS+=copy.9 malloc.9
MLINLS+=fetch.9 fubyte.9
MLINKS+=fetch.9 fuswintr.9
MLINKS+=fetch.9 fusword.9
MLINKS+=fetch.9 fuword.9
MLINKS+=fetch.9 subyte.9
MLINKS+=fetch.9 suswintr.9
MLINKS+=fetch.9 susword.9
MLINKS+=fetch.9 suword.9
MLINKS+=spl.9 spl0.9
MLINKS+=spl.9 splbio.9
MLINKS+=spl.9 splclock.9
MLINKS+=spl.9 splhigh.9
MLINKS+=spl.9 splimp.9
MLINKS+=spl.9 splnet.9
MLINKS+=spl.9 splsoftclock.9
MLINKS+=spl.9 splsofttty.9
MLINKS+=spl.9 splstatclock.9
MLINKS+=spl.9 spltty.9
MLINKS+=spl.9 splvm.9
MLINKS+=spl.9 splx.9
MLINKS+=uio.9 uiomove.9
MLINKS+=vslock.9 vsunlock.9
.include "bsd.prog.mk"

View file

@ -0,0 +1,65 @@
.\" -*- nroff -*-
.\"
.\" Copyright (c) 1996 Doug Rabson
.\"
.\" All rights reserved.
.\"
.\" This program is free software.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\" notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\" notice, this list of conditions and the following disclaimer in the
.\" documentation and/or other materials provided with the distribution.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY EXPRESS OR
.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
.\" IN NO EVENT SHALL THE DEVELOPERS BE LIABLE FOR ANY DIRECT, INDIRECT,
.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\"
.\" $FreeBSD: src/share/man/man9/VFS.9,v 1.4 1999/09/11 00:57:20 alfred Exp $
.\"
.Dd July 24, 1996
.Os
.Dt VFS 9
.Sh 名称
.Nm VFS
.Nd ファイルシステムへのカーネルインターフェイス
.Sh 解説
ファイルシステムの設定や情報を、
設定したり問い合わせたりするために使用される呼び出しです。
.Pp
ある VFS 操作を実装しないファイルシステムは、
空の関数の実装したり、
.Fa eopnotsupp
にキャストしたりするよりも、
.Fa src/sys/vfs_defaults.c
にある適切な
.Fa vfs_std
関数を使用するべきです。
.Sh 関連項目
.Xr vnode 9 ,
.Xr VFS_CHECKEXP 9 ,
.Xr VFS_FHTOVP 9 ,
.Xr VFS_INIT 9 ,
.Xr VFS_MOUNT 9 ,
.Xr VFS_QUOTACTL 9 ,
.Xr VFS_START 9 ,
.Xr VFS_STATFS 9 ,
.Xr VFS_SYNC 9 ,
.Xr VFS_UNMOUNT 9 ,
.Xr VFS_VGET 9 ,
.Xr VFS_VPTOFH 9
.Sh 作者
このマニュアルページは
.An Doug Rabson
が書きました。

View file

@ -0,0 +1,60 @@
.\" -*- nroff -*-
.\"
.\" Copyright (c) 1998 Doug Rabson
.\"
.\" All rights reserved.
.\"
.\" This program is free software.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\" notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\" notice, this list of conditions and the following disclaimer in the
.\" documentation and/or other materials provided with the distribution.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY EXPRESS OR
.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
.\" IN NO EVENT SHALL THE DEVELOPERS BE LIABLE FOR ANY DIRECT, INDIRECT,
.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
.\" (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_generic_attach.9,v 1.3 1999/08/28 00:21:18 peter Exp $
.\"
.Dd June 16, 1998
.Dt BUS_GENERIC_ATTACH 9
.Os FreeBSD
.Sh 名称
.Nm bus_generic_attach
.Nd バスのための
.Dv DEVICE_ATTACH
の一般的な実装
.Sh 書式
.Fd #include <sys/param.h>
.Fd #include <sys/bus.h>
.Ft int
.Fn bus_generic_attach "device_t dev"
.Sh 解説
.Pp
この関数はほとんどのバスのコードで使用されることができる
.Xr DEVICE_ATTACH 9
メソッドの 1 つの実装を提供します。
単純に、バスに接続されているそれぞれの子デバイスに対して
.Xr device_probe_and_attach 9
を呼びます。
.Sh 戻り値
成功時は 0 を、そうでない場合は適切なエラーが返されます。
.Sh 関連項目
.Xr device 9 ,
.Xr driver 9
.Sh 作者
このマニュアルページは
.An Doug Rabson
が書きました。

View file

@ -0,0 +1,60 @@
.\" -*- nroff -*-
.\"
.\" Copyright (c) 1998 Doug Rabson
.\"
.\" All rights reserved.
.\"
.\" This program is free software.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\" notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\" notice, this list of conditions and the following disclaimer in the
.\" documentation and/or other materials provided with the distribution.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY EXPRESS OR
.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
.\" IN NO EVENT SHALL THE DEVELOPERS BE LIABLE FOR ANY DIRECT, INDIRECT,
.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
.\" (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_generic_detach.9,v 1.3 1999/08/28 00:21:18 peter Exp $
.\"
.Dd June 16, 1998
.Dt BUS_GENERIC_DETACH 9
.Os FreeBSD
.Sh 名称
.Nm bus_generic_detach
.Nd バスのための
.Dv DEVICE_DETACH
の一般的な実装
.Sh 書式
.Fd #include <sys/param.h>
.Fd #include <sys/bus.h>
.Ft int
.Fn bus_generic_detach "device_t dev"
.Sh 解説
.Pp
この関数はほとんどのバスのコードで使用されることが可能な
.Xr DEVICE_DETACH 9
メソッドの 1 つの実装を提供します。
これは単純にバスにアタッチされている各々の子デバイスの
.Xr DEVICE_DETACH 9
を呼びます。
.Sh 戻り値
成功時は 0 を、そうでない場合は適切なエラーが返されます。
.Sh 関連項目
.Xr device 9 ,
.Xr driver 9
.Sh 作者
このマニュアルページは
.An Doug Rabson
が書きました。

View file

@ -0,0 +1,58 @@
.\" -*- nroff -*-
.\"
.\" Copyright (c) 1998 Doug Rabson
.\"
.\" All rights reserved.
.\"
.\" This program is free software.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\" notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\" notice, this list of conditions and the following disclaimer in the
.\" documentation and/or other materials provided with the distribution.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY EXPRESS OR
.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
.\" IN NO EVENT SHALL THE DEVELOPERS BE LIABLE FOR ANY DIRECT, INDIRECT,
.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
.\" (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_generic_map_intr.9,v 1.3 1999/08/28 00:21:19 peter Exp $
.\"
.Dd June 16, 1998
.Dt BUS_GENERIC_MAP_INTR 9
.Os FreeBSD
.Sh 名称
.Nm bus_generic_map_intr
.Nd バスのための
.Dv BUS_MAP_INTR
の一般的な実装
.Sh 書式
.Fd #include <sys/param.h>
.Fd #include <sys/bus.h>
.Ft int
.Fn bus_generic_map_intr "device_t dev" "device_t child" "driver_intr_t *intr" "void *arg"
.Sh 解説
.Pp
この
.Xr BUS_MAP_INTR 9
の単純な実装は、
.Fa dev
の親のメソッドを呼び出すだけです。
.Sh 戻り値
成功時には 0 が返され、それ以外の場合は適切なエラーが返されます。
.Sh 関連項目
.Xr device 9
.Sh 作者
このマニュアルページは
.An Doug Rabson
が書きました。

View file

@ -0,0 +1,70 @@
.\" -*- nroff -*-
.\"
.\" Copyright (c) 1998 Doug Rabson
.\"
.\" All rights reserved.
.\"
.\" This program is free software.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\" notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\" notice, this list of conditions and the following disclaimer in the
.\" documentation and/or other materials provided with the distribution.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY EXPRESS OR
.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
.\" IN NO EVENT SHALL THE DEVELOPERS BE LIABLE FOR ANY DIRECT, INDIRECT,
.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
.\" (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_generic_print_child.9,v 1.5 1999/08/28 00:21:19 peter Exp $
.\"
.Dd June 16, 1998
.Dt BUS_GENERIC_PRINT_CHILD 9
.Os FreeBSD
.Sh 名称
.Nm bus_generic_print_child
.Nd バスのための
.Dv DEVICE_PRINT_CHILD
の一般的な実装
.Sh 書式
.Fd #include <sys/param.h>
.Fd #include <sys/bus.h>
.Ft int
.Fn bus_generic_print_child "device_t dev" "device_t child"
.Sh 解説
.Pp
この実装はデフォルトのデバイスアナウンスメッセージを出力します。
与えられた 'bar0' バス上の 'foo0' デバイスが、
"FooCard 1234" という名前であるならば、
下記のように出力されるでしょう。
.Pp
foo0: <FooCard 1234> on bar0
.Pp
bus_generic_print_child 自身は
.Fn bus_print_child_header
.Fn bus_print_child_footer
の 2 つの関数を呼び出します。
これらはそれぞれ "foo0: <FooCard 1234>" と "on bar0" の文字を出力します。
もし
.Fn bus_generic_print_child
があなたの要求に完全には合わない場合でも、
可能であればあなたの独自のコードでこれらのルーチンを使用するべきです
.Sh 関連項目
.Xr device 9
.Sh 戻り値
出力した文字数。
.Sh 作者
このマニュアルページは
.An Doug Rabson
が書きました。

View file

@ -0,0 +1,60 @@
.\" -*- nroff -*-
.\"
.\" Copyright (c) 1998 Doug Rabson
.\"
.\" All rights reserved.
.\"
.\" This program is free software.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\" notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\" notice, this list of conditions and the following disclaimer in the
.\" documentation and/or other materials provided with the distribution.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY EXPRESS OR
.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
.\" IN NO EVENT SHALL THE DEVELOPERS BE LIABLE FOR ANY DIRECT, INDIRECT,
.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
.\" (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_generic_read_ivar.9,v 1.4 1999/08/28 00:21:19 peter Exp $
.\"
.Dd June 16, 1998
.Dt BUS_GENERIC_READ_IVAR 9
.Os FreeBSD
.Sh 名称
.Nm bus_generic_read_ivar ,
.Nm bus_generic_write_ivar
.Nd バスのための
.Dv BUS_READ_IVAR
および
.Dv BUS_WRITE_IVAR
の一般的な実装
.Sh 書式
.Fd #include <sys/param.h>
.Fd #include <sys/bus.h>
.Ft int
.Fn bus_generic_read_ivar "device_t dev" "device_t child" "int index" "uintptr_t *result"
.Ft int
.Fn bus_generic_write_ivar "device_t dev" "device_t child" "int index" "uintptr_t value"
.Sh 解説
.Pp
これらの関数は単純に
.Dv ENOENT
を返します。
.Sh 関連項目
.Xr device 9 ,
.Xr driver 9
.Sh 作者
このマニュアルページは
.An Doug Rabson
が書きました。

View file

@ -0,0 +1,61 @@
.\" -*- nroff -*-
.\"
.\" Copyright (c) 1998 Doug Rabson
.\"
.\" All rights reserved.
.\"
.\" This program is free software.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\" notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\" notice, this list of conditions and the following disclaimer in the
.\" documentation and/or other materials provided with the distribution.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY EXPRESS OR
.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
.\" IN NO EVENT SHALL THE DEVELOPERS BE LIABLE FOR ANY DIRECT, INDIRECT,
.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
.\" (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_generic_shutdown.9,v 1.3 1999/08/28 00:21:20 peter Exp $
.\"
.Dd June 16, 1998
.Dt BUS_GENERIC_SHUTDOWN 9
.Os FreeBSD
.Sh 名称
.Nm bus_generic_shutdown
.Nd バスのための
.Dv DEVICE_SHUTDOWN
の一般的な実装
.Sh 書式
.Fd #include <sys/param.h>
.Fd #include <sys/bus.h>
.Ft int
.Fn bus_generic_shutdown "device_t dev"
.Sh 解説
.Pp
この関数は、ほとんどのバスのコードで使用されることができる
.Xr DEVICE_SHUTDOWN 9
の実装を提供します。
これは単純に、
バスにアタッチされているの子デバイスそれぞれの
.Xr DEVICE_SHUTDOWN 9
メソッドを呼び出します。
.Sh 戻り値
成功時には 0 が返され、それ以外の場合は適切なエラーが返されます。
.Sh 関連項目
.Xr device 9 ,
.Xr driver 9
.Sh 作者
このマニュアルページは
.An Doug Rabson
が書きました。

138
ja_JP.eucJP/man/man9/copy.9 Normal file
View file

@ -0,0 +1,138 @@
.\" $NetBSD: copy.9,v 1.2 1996/01/09 03:23:04 thorpej Exp $
.\"
.\" Copyright (c) 1996 Jason R. Thorpe.
.\" All rights reserved.
.\"
.\" This code is derived from software contributed by Kenneth Stailey.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\" notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\" notice, this list of conditions and the following disclaimer in the
.\" documentation and/or other materials provided with the distribution.
.\" 3. All advertising materials mentioning features or use of this software
.\" must display the following acknowledgement:
.\" This product includes software developed for the NetBSD Project
.\" by Jason R. Thorpe.
.\" 4. The name of the author may not be used to endorse or promote products
.\" derived from this software without specific prior written permission.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
.\" IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
.\" BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
.\" LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
.\" AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
.\" OR TORT (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/copy.9,v 1.6 1999/08/28 00:21:20 peter Exp $
.\"
.Dd Jan 7, 1996
.Dt COPY 9
.Os FreeBSD
.Sh 名称
.Nm copy ,
.Nm copyin ,
.Nm copyout ,
.Nm copystr ,
.Nm copyinstr
.\" .Nm copyinstr ,
.\" .Nm copyoutstr
.Nd カーネルコピー関数
.Sh 書式
.Fd #include <sys/types.h>
.Fd #include <sys/systm.h>
.Ft int
.Fn copyin "const void *uaddr" "void *kaddr" "size_t len"
.Ft int
.Fn copyout "const void *kaddr" "void *uaddr" "size_t len"
.Ft int
.Fn copystr "const void *kfaddr" "void *kdaddr" "size_t len" "size_t *done"
.Ft int
.Fn copyinstr "const void *uaddr" "void *kaddr" "size_t len" "size_t *done"
.\" .Ft int
.\" .Fn copyoutstr "const void *kaddr" "void *uaddr" "size_t len" "size_t *done"
.Sh 解説
.Nm
関数群は連続したデータをあるアドレスから
別のアドレスへコピーするようデザインされています。
.Fn copystr
以外の関数は、ユーザー空間からカーネル空間へ、
あるいは反対向きにデータをコピーします。
.Pp
.Nm
関数群は以下の機能を提供します。
.Bl -tag -width "copyoutstr()"
.It Fn copyin
ユーザー空間のアドレス
.Pa uaddr
からカーネル空間のアドレス
.Pa kaddr
.Pa len
バイトのデータをコピーします。
.It Fn copyout
カーネル空間のアドレス
.Pa kaddr
からユーザー空間のアドレス
.Pa uaddr
.Pa len
バイトのデータをコピーします。
.It Fn copystr
カーネル空間のアドレス
.Pa kfaddr
からカーネル空間のアドレス
.Pa kdaddr
へヌル文字で終端された最大
.Pa len
文字の文字列をコピーします。
末尾のヌル文字を含む実際にコピーされた文字数が
.Pa *done
に返されます。
.It Fn copyinstr
ユーザー空間のアドレス
.Pa uaddr
からカーネル空間のアドレス
.Pa kaddr
へヌル文字で終端された最大
.Pa len
文字の文字列をコピーします。
末尾のヌル文字を含む実際にコピーされた文字数が
.Pa *done
に返されます。
.\" .It Fn copyoutstr
.\" カーネル空間のアドレス
.\" .Pa kaddr
.\" からユーザー空間のアドレス
.\" .Pa uaddr
.\" へヌル文字で終端された最大
.\" .Pa len
.\" 文字の文字列をコピーします。
.\" 末尾のヌル文字を含む実際にコピーされた文字数が
.\" .Pa *done
.\" に返されます。
.El
.Sh 戻り値
それぞれの
.Nm
関数は成功した時に 0 を、不正なアドレスに遭遇した時に EFAULT を返します。
さらに、
.Fn copystr
および
.Fn copyinstr
.\" 、
.\" .Fn copyoutstr
関数は文字列が
.Pa len
バイトよりも長い時に ENAMETOOLONG を返します。
.Sh 関連項目
.Xr fetch 9 ,
.Xr store 9 .

View file

@ -0,0 +1,90 @@
.\" $NetBSD: fetch.9,v 1.2 1996/01/09 21:59:24 perry Exp $
.\"
.\" Copyright (c) 1996 Jason R. Thorpe.
.\" All rights reserved.
.\"
.\" This code is derived from software contributed by Kenneth Stailey.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\" notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\" notice, this list of conditions and the following disclaimer in the
.\" documentation and/or other materials provided with the distribution.
.\" 3. All advertising materials mentioning features or use of this software
.\" must display the following acknowledgement:
.\" This product includes software developed for the NetBSD Project
.\" by Jason R. Thorpe.
.\" 4. The name of the author may not be used to endorse or promote products
.\" derived from this software without specific prior written permission.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
.\" IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
.\" BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
.\" LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
.\" AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
.\" OR TORT (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/fetch.9,v 1.6 1999/08/28 00:21:28 peter Exp $
.\"
.Dd Jan 7, 1996
.Dt FETCH 9
.Os FreeBSD
.Sh 名称
.Nm fetch ,
.Nm fubyte ,
.Nm fusword ,
.Nm fuswintr ,
.Nm fuword
.Nd ユーザー空間からのデータの取り出し
.Sh 書式
.Fd #include <sys/types.h>
.Fd #include <sys/time.h>
.Fd #include <sys/systm.h>
.Fd #include <sys/resourcevar.h>
.Ft int
.Fn fubyte "const void *base"
.Ft int
.Fn fusword "void *base"
.Ft int
.Fn fuswintr "void *base"
.Ft long
.Fn fuword "const void *base"
.Sh 解説
.Nm
関数群はユーザー空間から小さなデータをコピーするようにデザインされています。
.Pp
.Nm
ルーチンは以下の機能を提供します。
.Bl -tag -width "fuswintr()"
.It Fn fubyte
ユーザー空間のアドレス
.Pa base
から 1 バイトのデータを取り出します。
.It Fn fusword
ユーザー空間のアドレス
.Pa base
から 1 ショートワードのデータを取り出します。
.It Fn fuswintr
ユーザー空間のアドレス
.Pa base
から 1 ショートワードデータを取り出します。
この関数は割り込みコンテキスト中でも安全に呼び出せます。
.It Fn fuword
ユーザー空間のアドレス
.Pa base
から 1 ワードのデータを取り出します。
.El
.Sh 戻り値
.Nm
関数は取り出したデータを返しますが、失敗した場合は -1 を返します。
.Sh 関連項目
.Xr copy 9 ,
.Xr store 9 .

243
ja_JP.eucJP/man/man9/free.9 Normal file
View file

@ -0,0 +1,243 @@
.\" Copyright (c) 1996 The NetBSD Foundation, Inc.
.\" All rights reserved.
.\"
.\" This code is derived from software contributed to The NetBSD Foundation
.\" by Paul Kranenburg.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\" notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\" notice, this list of conditions and the following disclaimer in the
.\" documentation and/or other materials provided with the distribution.
.\" 3. All advertising materials mentioning features or use of this software
.\" must display the following acknowledgement:
.\" This product includes software developed by the NetBSD
.\" Foundation, Inc. and its contributors.
.\" 4. Neither the name of The NetBSD Foundation nor the names of its
.\" contributors may be used to endorse or promote products derived
.\" from this software without specific prior written permission.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
.\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
.\" TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
.\" PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE
.\" LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
.\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
.\" 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.13 2000/03/03 14:05:06 sheldonh Exp $
.\"
.Dd June 16, 1996
.Dt MALLOC 9
.Os FreeBSD
.Sh 名称
.Nm malloc ,
.Nm MALLOC ,
.Nm free ,
.Nm FREE
.Nd カーネルメモリマネージメントルーチン
.Sh 書式
.Fd #include <sys/types.h>
.Fd #include <sys/malloc.h>
.Ft void *
.Fn malloc "unsigned long size" "struct malloc_type *type" "int flags"
.Fn MALLOC "space" "cast" "unsigned long size" "struct malloc_type *type" "int flags"
.Ft void
.Fn free "void *addr" "struct malloc_type *type"
.Fn FREE "void *addr" "struct malloc_type *type"
.Sh 解説
.Fn malloc
関数はカーネルアドレス空間の初期化されていたいメモリを
.Fa size
で明示された大きさの 1 つのオブジェクトとして割り当てます。
.Fn free
.Fn malloc
で先に割り当てられていた
.Fa addr
のアドレスのメモリを再使用するために開放します。
メモリは 0 にクリアされません。
.Fn MALLOC
マクロは機能的には
.Bd -literal -offset indent
(space) = (cast)malloc((u_long)(size), type, flags)
.Ed
.Pp
と同等で、
.Fn FREE
マクロは
.Bd -literal -offset indent
free((addr), type)
.Ed
.Pp
と同等です。
標準Cライブラリの同義関数の
.Pq Xr malloc 3
と異なり、カーネルバージョンは更に 2 つの引き数をとります。
引き数
.Fa flags
.Fn malloc
の下記の操作上の特性からより適したものを選びます。
.Bl -tag -width M_NOWAIT
.It Dv M_NOWAIT
リソースの不足のため直ちに実行することが出来ない場合は、
.Fn malloc
.Dv NULL
を返させます。
さもなければ、
.Fn malloc
は他のプロセスによるリソースの開放を待つために
.Fn sleep
を呼び出すでしょう。
このフラグがセットされていれば、
.Fn malloc
はブロックせずに
.Dv NULL
を返します。
.Dv M_WAITOK
が 0 に定義されていることに注意してください。
これはブロッキング操作がデフォルトだということです。
.It Dv M_ASLEEP
リソースの不足のため直ちに実行することが出来ない場合は、
.Fn malloc
.Fn asleep
を呼ばせます。
.Dv M_ASLEEP
は単独での使用は実用的ではなく、常に
.Dv M_NOWAIT
との論理和(OR)をとって
.Fn malloc
.Fn asleep
を呼ばせ、直ちに
.Dv NULL
を返させます。
呼び出し側がある時点で
.Fn await
を呼び、割り当てのリトライをすることが期待されています。
当のルーチンに依存して、呼び出し側で一時的な失敗を上位に連鎖的に伝搬し、実際に
.Fn malloc
がキューに入れた非同期のウェイトをブロックする
幾つかの別の高レベルルーチンをもつことを決めることも出来ます。
.It Dv M_WAITOK
リソースを待つことが可能(OK)であることを示します。
都合の悪いことに 0 として定義されているので、この値に対して比較したり、
フラグとして論理積(AND)をとることが決して無い様に注意されなければなりません。
デフォルトの操作はメモリの割り当てが成功するまでブロックします。
.Dv M_NOWAIT
が明示されると
.Fn malloc
.Dv NULL
のみを返すことが出来ます。
.It Dv M_USE_RESERVE
システムが要求されたメモリを獲得するために、
リザーブ領域を調査することが可能なことを示します。
このオプションは以前は M_KERNEL と呼ばれていましたが、
より解りやすく改名されていました。
このオプションは軽視されていて、カーネルから徐々に削除されています。
そのため、新しいプログラミングでは使用されない様にするべきです。
.El
.Pp
引き数
.Fa type
はメモリの利用方法の統計をとるために使われていて、簡単で健全なチェックです。
この統計は
.Sq vmstat -m
により調査されることが出来ます。
.Pp
.Fa type
.Fn MALLOC_DECLARE
.Fn MALLOC_DEFINE
マクロを通して
.Va malloc_type_t
を使用し決定されます。
.Bd -literal -offset indent
/* sys/something/foo_extern.h */
MALLOC_DECLARE(M_FOOBUF);
/* sys/something/foo_main.c */
MALLOC_DEFINE(M_FOOBUF, "foobuffers",
"Buffers to foo data into the ether");
/* sys/something/foo_subr.c */
\&...
MALLOC(buf, struct foo_buf *, sizeof *buf, M_FOOBUF, M_NOWAIT);
.Ed
.Pp
.Sh 戻り値
.Fn malloc
はあらゆるタイプのストレージに適切に整列されたカーネル仮想アドレス、
または要求が満足できずに且つ
.Dv M_NOWAIT
がセットされている場合に
.Dv NULL
を返します。
.Dv M_ASLEEP
がセットされていて
.Fn malloc
.Dv NULL
を返す場合、副作用として
.Fn asleep
が呼び出されます。
.Sh 関連項目
.Xr vmstat 8
.Sh 診断
.Dv DIAGNOSTIC
コンフィギュレーションオプションを付けてコンパイルされたカーネルは、
割り当てられた領域外への書き込みや不均衡な
.Fn malloc
関数と
.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

View file

@ -0,0 +1,116 @@
.\" $NetBSD: inittodr.9,v 1.2 1996/03/27 21:16:06 jtc Exp $
.\"
.\" Copyright (c) 1994 Christopher G. Demetriou
.\" All rights reserved.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\" notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\" notice, this list of conditions and the following disclaimer in the
.\" documentation and/or other materials provided with the distribution.
.\" 3. All advertising materials mentioning features or use of this software
.\" must display the following acknowledgement:
.\" This product includes software developed by Christopher G. Demetriou
.\" for the NetBSD Project.
.\" 3. The name of the author may not be used to endorse or promote products
.\" derived from this software without specific prior written permission
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
.\" IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
.\" (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/inittodr.9,v 1.4 1999/08/28 00:21:28 peter Exp $
.\"
.Dd March 22, 1997
.Dt INITTODR 9
.Os FreeBSD
.Sh 名称
.Nm inittodr
.Nd システムタイムの初期化
.Sh 書式
.Fd #include <sys/types.h>
.Fd #include <sys/systm.h>
.Ft void
.Fn inittodr "time_t base"
.Sh 解説
.Fn inittodr
関数は時刻を決定しシステムクロックの設定を行います。
システムのバッテリバックアップクロックおよび
.Fa base
で与えられるルートファイルシステムから得られる時刻
を検査する発見方法を使用して正しい時刻の取得を試みます。
.Fa base
の値を得る方法は、ルートファイルシステムのタイプに依存して変化するでしょう。
下記の発見方法が使用されます。
.Bl -bullet
.It
バッテリバックアップクロックが妥当な時刻であれば、これが使用されます。
.\" .It
.\" If the battery-backed clock does not have a valid time, and
.\" the time provided in
.\" .Fa base
.\" is within reason,
.\" .Fa base
.\" is used as the current time.
.\" .It
.\" If the battery-backed clock appears invalid, and
.\" .Fa base
.\" appears non-sensical or was not provided (was given as zero),
.\" a arbitrary base (typically some time in the late 1970s)
.\" will be used.
.It
バッテリバックアップクロックが妥当な時刻でなければ、
.Fa base
で与えられた時刻が使用されます。
.El
.Pp
一度システムタイムが決定されると、これが
.Va time
変数に格納されます。
.Sh 診断
システムタイムの計算に問題があった場合は、
.Fn inittodr
関数は診断メッセージを出力します。
出力される診断メッセージには下記の状態が含まれます。
.Bl -bullet
.It
バッテリバックアップクロックが無意味のようである。
.\" .It
.\" The
.\" .Fa base
.\" time appears nonsensical.
.\" .It
.\" The
.\" .Fa base
.\" time and the battery-backed clock's time differ by a large amount.
.El
.Sh 関連項目
.Xr resettodr 9 ,
.Xr time 9
.Sh バグ
多くのシステムで
.Fn inittodr
は、
年、月、日、時、分、秒で表現される時刻から、秒で表現される
.Va time
に変換しなければなりません。
多くの実装ではコードの共有が可能ですが、共有していません。
.Pp
それぞれのシステムの正確な時刻取得のための発見方法は、わずかに異なります。
.Pp
.Tn FreeBSD
の実装は、
バッテリバックアップクロックを使用できない場合は、
.Fa base
で与えられた時刻をもっとうまく検証するべきでしょう。
現在は無条件にシステムタイムをこの値に設定します。

View file

@ -0,0 +1,111 @@
.\" Copyright (c) 1983, 1991, 1993
.\" The Regents of the University of California. All rights reserved.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\" notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\" notice, this list of conditions and the following disclaimer in the
.\" documentation and/or other materials provided with the distribution.
.\" 3. All advertising materials mentioning features or use of this software
.\" must display the following acknowledgement:
.\" This product includes software developed by the University of
.\" California, Berkeley and its contributors.
.\" 4. Neither the name of the University nor the names of its contributors
.\" may be used to endorse or promote products derived from this software
.\" without specific prior written permission.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
.\" LIABILITY, OR TORT (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/intro.9,v 1.10 1999/08/28 00:21:28 peter Exp $
.\"
.Dd December 13, 1995
.Dt INTRO 9
.Os FreeBSD 2.2
.Sh 名称
.Nm intro
.Nd システムカーネルインターフェイスの紹介
.Sh 解説
このセクションはカーネル内のインターフェイスとサブルーチンについての
情報を含んでいます。
.Sh ANSI-C 等のプロトタイプ
お願いします。
.Pp
我々は全てのコードが完全にプロトタイプされていることを望みます。
.Pp
あなたのコードが
.Nm cc
.Ar -Wall
とした時にきれいにコンパイルできれば、我々は嬉しく思います。
これは
.Nm cc
を黙らせることが問題ではなく、
苦情の原因事象を避けることが問題であるということを理解することが重要です。
遠慮なしに言うと、キャストや他の不明瞭化する手法で問題を隠すのではなく、
問題を解決してください。
.Sh インデントとスタイル
それを信用するかどうかは別として、
インデントとスタイルについてのガイドが現に存在します。
けれども広くは適用されていません。
.Pp
人々がそれに注意を払い、少なくとも露骨に違反しないならば、
我々はそれを認めるでしょう。
.Pp
我々はあまりにもひどくない限り、あなたの独自のスタイルを気にしませんが、
必ず我々にも読めるようにしてください。
.Pp
更に情報を得るために
.Xr style 9
を読む時間を取ってください。
.Sh 命名規則
幾つかの一般的な規則があります。
.Bl -enum
.It
ある関数が DDB でのデバッグ支援を意図したものであるならば、
それは下記のように囲まれるべきです。
.Bd -literal -offset indent
#ifdef DDB
#endif /* DDB */
.Ed
加えて、関数の名前は、それがデバッガルーチンであることが明確にわかるように、
.Li DDB_
を接頭辞として始めるべきです。
.El
.Sh シンボルのスコープ
カーネル内のシンボルのスコープは注意深く考慮することが重要です。
何らかの理由でそう出来ない場合以外は、デフォルトでは全てを static にします。
.Pp
この方針には幾つかの理由があります。
主な理由は、カーネルは単一の名前空間であることと、
ここでは名前空間の汚染もあまり名案ではないということです。
.Pp
デバイスドライバと
カーネルに新しい内部のインターフェイスを追加しないモジュールでは、
可能であるならば全てのソースコードが一つのファイルであるべきです。
それは全てのシンボルを static にできる方法であるからです。
.Pp
何らかの理由によりモジュールが複数のファイルに分割される場合には、
大きな境界線に沿ってそのモジュールを分割するよう努力して、
グローバルなシンボルの数を手引にして熟考してください。
少ない方が好ましいです。
.Sh 関連項目
.Xr style 9
.Sh 歴史
.Nm intro
セクションのマニュアルページは
.Fx 2.2
で登場しました。

View file

@ -0,0 +1,247 @@
.\" Copyright (c) 1996 The NetBSD Foundation, Inc.
.\" All rights reserved.
.\"
.\" This code is derived from software contributed to The NetBSD Foundation
.\" by Paul Kranenburg.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\" notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\" notice, this list of conditions and the following disclaimer in the
.\" documentation and/or other materials provided with the distribution.
.\" 3. All advertising materials mentioning features or use of this software
.\" must display the following acknowledgement:
.\" This product includes software developed by the NetBSD
.\" Foundation, Inc. and its contributors.
.\" 4. Neither the name of The NetBSD Foundation nor the names of its
.\" contributors may be used to endorse or promote products derived
.\" from this software without specific prior written permission.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
.\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
.\" TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
.\" PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE
.\" LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
.\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
.\" 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.13 2000/03/03 14:05:06 sheldonh Exp $
.\"
.Dd June 16, 1996
.Dt MALLOC 9
.Os FreeBSD
.Sh 名称
.Nm malloc ,
.Nm MALLOC ,
.Nm free ,
.Nm FREE
.Nd カーネルメモリマネージメントルーチン
.Sh 書式
.Fd #include <sys/types.h>
.Fd #include <sys/malloc.h>
.Ft void *
.Fn malloc "unsigned long size" "struct malloc_type *type" "int flags"
.Fn MALLOC "space" "cast" "unsigned long size" "struct malloc_type *type" "int flags"
.Ft void
.Fn free "void *addr" "struct malloc_type *type"
.Fn FREE "void *addr" "struct malloc_type *type"
.Sh 解説
.Fn malloc
関数はカーネルアドレス空間の初期化されていないメモリを
.Fa size
で指定された大きさの 1 つのオブジェクトとして割り当てます。
.Fn free
.Fn malloc
で先に割り当てられていた
.Fa addr
のアドレスのメモリを再使用するために開放します。
メモリは 0 にクリアされません。
マクロ版の
.Fn MALLOC
は機能的には
.Bd -literal -offset indent
(space) = (cast)malloc((u_long)(size), type, flags)
.Ed
.Pp
と同等で、
マクロ版
.Fn FREE
.Bd -literal -offset indent
free((addr), type)
.Ed
.Pp
と同等です。
標準Cライブラリの同義関数
.Pq Xr malloc 3
とは異なり、カーネルバージョンは更に 2 つの引き数をとります。
引き数
.Fa flags
.Fn malloc
の操作上の特性を以下のようにみなします。
.Bl -tag -width M_NOWAIT
.It Dv M_NOWAIT
リソースの不足のため直ちに要求を満たすことができない場合は、
.Fn malloc
.Dv NULL
を返すようにします。
通常は、
.Fn malloc
は他のプロセスによるリソースの開放を待つために
.Fn sleep
を呼び出すでしょう。
このフラグがセットされていれば、
.Fn malloc
はブロックせずに
.Dv NULL
を返します。
.Dv M_WAITOK
が 0 に定義されていることに注意してください。
これはブロッキング操作がデフォルトだということです。
.It Dv M_ASLEEP
リソースの不足のため直ちに要求を満たすことができない場合は、
.Fn malloc
.Fn asleep
を呼ぶようにします。
.Dv M_ASLEEP
の単独での使用は実用的ではなく、常に
.Dv M_NOWAIT
との論理和(OR)をとって
.Fn malloc
.Fn asleep
を呼ばせ、直ちに
.Dv NULL
を返させます。
呼び出し側がある時点で
.Fn await
を呼び、割り当てのリトライをすることが期待されています。
当のルーチンに依存して、呼び出し側で一時的な失敗を上位に連鎖的に伝搬し、実際に
.Fn malloc
がキューに入れた非同期のウェイトをブロックする
幾つかの別の高レベルルーチンをもつことを決めることも出来ます。
.It Dv M_WAITOK
リソースを待つことが可能(OK)であることを示します。
都合の悪いことに 0 と定義されているので、直接この値に対して比較したり、
フラグとして論理積(AND)をとったりしないように注意されなければなりません。
デフォルトの操作はメモリの割り当てが成功するまでブロックします。
.Dv M_NOWAIT
が指定されると
.Fn malloc
は単に
.Dv NULL
を返すことが出来ます。
.It Dv M_USE_RESERVE
要求されたメモリを獲得するために、
システムがリザーブ領域を使ってよいことを示します。
このオプションは以前は M_KERNEL と呼ばれていましたが、
より明示的に改名されました。
このオプションは軽視されていて、カーネルから徐々に削除されています。
そのため、新たなプログラミングでは使用されない様にするべきです。
.El
.Pp
引き数
.Fa type
はメモリの利用方法の統計をとるためと、
簡単なサニティチェックのために使われています。
この統計は
.Sq vmstat -m
で調べることが出来ます。
.Pp
.Fa type
.Fn MALLOC_DECLARE
.Fn MALLOC_DEFINE
マクロを通じて
.Va malloc_type_t
typedef を使用して定義されます。
.Bd -literal -offset indent
/* sys/something/foo_extern.h */
MALLOC_DECLARE(M_FOOBUF);
/* sys/something/foo_main.c */
MALLOC_DEFINE(M_FOOBUF, "foobuffers",
"Buffers to foo data into the ether");
/* sys/something/foo_subr.c */
\&...
MALLOC(buf, struct foo_buf *, sizeof *buf, M_FOOBUF, M_NOWAIT);
.Ed
.Pp
.Sh 戻り値
.Fn malloc
はすべてのタイプのオブジェクトの格納に適切なように整列された
カーネル仮想アドレスを、
または要求が満足できずかつ
.Dv M_NOWAIT
がセットされている場合に
.Dv NULL
を返します。
.Dv M_ASLEEP
がセットされていて
.Fn malloc
.Dv NULL
を返す場合、副作用として
.Fn asleep
が呼び出されます。
.Sh 関連項目
.Xr vmstat 8
.Sh 診断
.Dv DIAGNOSTIC
コンフィギュレーションオプションを付けてコンパイルされたカーネルは、
割り当てられた領域以外への書き込みや
.Fn malloc
関数と
.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

View file

@ -0,0 +1,66 @@
.\" $NetBSD: panic.9,v 1.2 1996/10/09 17:20:04 explorer Exp $
.\"
.\" Copyright (c) 1996 Michael Graff.
.\" All rights reserved.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\" notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\" notice, this list of conditions and the following disclaimer in the
.\" documentation and/or other materials provided with the distribution.
.\" 3. All advertising materials mentioning features or use of this software
.\" must display the following acknowledgement:
.\" This product includes software developed by Michael Graff
.\" for the NetBSD Project.
.\" 3. The name of the author may not be used to endorse or promote products
.\" derived from this software without specific prior written permission
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
.\" IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
.\" (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/panic.9,v 1.4 1999/12/23 17:42:10 bde Exp $
.\"
.Dd August 11, 1995
.Dt PANIC 9
.Os
.Sh 名称
.Nm panic
.Nd 致命的なエラーによるシステムダウン
.Sh 書式
.Fd #include <sys/param.h>
.Ft void
.Fn panic "const char *fmt, ..."
.Sh 解説
.Fn panic
関数は動作中のシステムを終了させます。
.Fa fmt
メッセージは
.Xr printf 3
スタイルのフォーマット文字列です。
このメッセージはコンソールに出力され、
後でオペレーティングシステムのコアダンプから取り出すために
.Fa panicstr
がこのメッセージのアドレスに設定されます。
.Pp
もしカーネルデバッガが搭載されていれば、デバッガに制御を渡します。
さもなければ、オペレーティングシステムのコアダンプを
設定されているダンプデバイスに保存するように試みます。
.Pp
もし
.Fn panic
が 2 度呼ばれた場合(たとえばディスク同期ルーチンから)には、
ディスクの同期無しでシステムはリブートされます。
.Sh 戻り値
.Fn panic
関数は戻りません。

View file

@ -0,0 +1,142 @@
.\" $NetBSD: physio.9,v 1.2 1996/11/11 00:05:12 lukem Exp $
.\"
.\" Copyright (c) 1996 The NetBSD Foundation, Inc.
.\" All rights reserved.
.\"
.\" This code is derived from software contributed to The NetBSD Foundation
.\" by Paul Kranenburg.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\" notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\" notice, this list of conditions and the following disclaimer in the
.\" documentation and/or other materials provided with the distribution.
.\" 3. All advertising materials mentioning features or use of this software
.\" must display the following acknowledgement:
.\" This product includes software developed by the NetBSD
.\" Foundation, Inc. and its contributors.
.\" 4. Neither the name of The NetBSD Foundation nor the names of its
.\" contributors may be used to endorse or promote products derived
.\" from this software without specific prior written permission.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
.\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
.\" TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
.\" PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE
.\" LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
.\" CONTRACT, STRICT LIABILITY, OR TORT (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/physio.9,v 1.6.2.1 2000/04/01 20:33:15 asmodai Exp $
.\"
.Dd June 15, 1996
.Dt PHYSIO 9
.Os FreeBSD
.Sh 名称
.Nm physio
.Nd ロウデバイスの入出力の開始
.Sh 書式
.Fd #include <sys/param.h>
.Fd #include <sys/systm.h>
.Fd #include <sys/buf.h>
.Ft int
.Fn physio "dev_t dev" "struct uio *uio" "int ioflag"
.Sh 解説
.Fn physio
は通常、
文字型デバイスの read および write ルーチンから呼び出されるヘルパー関数で、
ユーザープロセスのバッファへの入出力を開始させます。
この関数は
.Fa uio
構造体に記述されている転送が完了するまで、与えられた
.Fa strategy
ルーチンを 1 回以上呼び出します。
.Fa strategy
を呼び出すごとの最大のデータ転送量は
.Fa minphys
ルーチンによって決定されます。
.Fa uio
構造体は通常ユーザー空間のアドレスを示すので、
.Fn physio
はプロセスをメモリ中にロックする必要があります。
これは、プロセスに
.Dv P_PHYSIO
フラグをセットすることで行ないます。
以前にエラー状態が検出された時を除いて、
.Fn physio
は常にリターンする前に全ての要求された転送が完了するまで待ちます。
全ての場合に、
.Fa bp
に渡されるバッファは転送が完了するまでの期間中、ロック(
.Dq busy
にマーク)されます。
.Pp
引数の詳細を下記に示します。
.Bl -tag -width "strategy"
.It Fa strategy
それぞれのデータのかたまりをデバイスに入出力開始させるために呼ばれる
デバイスの strategy ルーチン。
.It Fa bp
strategy ルーチンで使用されるバッファ。
このバッファのフラグは strategy に渡される時に
.Dv B_BUSY
および
.Dv B_PHYS
がセットされます。
もし bp が
.Dv NULL
であれば、システムのプールから割り当てられます。
.It Fa dev
デバイスを識別するために関連付けられたデバイス番号。
.It Fa flags
転送方向。
有効な設定は
.Dv B_READ
または
.Dv B_WRITE
のみ。
.It Fa minphys
デバイスの strategy ルーチンが取り扱う事ができる最大の転送サイズを
決定するために呼ばれる、デバイス固有のルーチン。
.It Fa uio
ユーザープロセスから要求された転送全体の記述。
現在は、
.Fa uio
構造体の
.Sq uio_segflg
フラグに
.Dv UIO_USERSPACE
以外の値をセットして渡した場合の結果は未定義です。
.El
.Pp
.Sh 戻り値
成功すれば
.Fn physio
は 0 を返します。
.Fa uio
構造体に示されているアドレス範囲が要求したプロセスから
アクセスできない場合には
.Er EFAULT
を返します。
.Fn physio
はデバイスの strategy ルーチンを呼んだ結果として発生する
あらゆるエラーを
.Dv B_ERROR
バッファフラグおよび
.Va b_error
フィールドを調査して返します。
デバイスが
.Dq end of file
の状態を示している時には、実際の転送サイズは
.Fa uio
構造体で要求しているサイズよりも小さくなる事に注意してください。
.Sh 関連項目
.Xr read 2 ,
.Xr write 2

View file

@ -0,0 +1,59 @@
.\" $NetBSD: resettodr.9,v 1.1 1995/11/25 21:24:51 perry Exp $
.\"
.\" Copyright (c) 1994 Christopher G. Demetriou
.\" All rights reserved.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\" notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\" notice, this list of conditions and the following disclaimer in the
.\" documentation and/or other materials provided with the distribution.
.\" 3. All advertising materials mentioning features or use of this software
.\" must display the following acknowledgement:
.\" This product includes software developed by Christopher G. Demetriou
.\" for the NetBSD Project.
.\" 3. The name of the author may not be used to endorse or promote products
.\" derived from this software without specific prior written permission
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
.\" IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
.\" (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/resettodr.9,v 1.4 1999/08/28 00:21:31 peter Exp $
.\"
.Dd November 13, 1995
.Dt RESETTODR 9
.Os FreeBSD
.Sh 名称
.Nm resettodr
.Nd バッテリーバックアップの時計をシステムの時間に合わせる
.Sh 書式
.Fd #include <sys/types.h>
.Fd #include <sys/systm.h>
.Ft void
.Fn resettodr "void"
.Sh 解説
.Fn resettodr
関数はシステムのバッテリーバックアップの時計をシステムが保有している
.Va time
変数の時間に合わせます。
.Sh 関連項目
.Xr inittodr 9 ,
.Xr time 9
.Sh バグ
多くのシステムで
.Fn resettodr
は内部表現の
.Va time
から年、月、日、時、分、秒で表現される時刻に変換しなければなりません。
多くのインプリメンテーションではコードの共有が可能ですが、共有していません。

199
ja_JP.eucJP/man/man9/spl.9 Normal file
View file

@ -0,0 +1,199 @@
.\"
.\" Copyright (c) 1996 Joerg Wunsch
.\"
.\" All rights reserved.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\" notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\" notice, this list of conditions and the following disclaimer in the
.\" documentation and/or other materials provided with the distribution.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY EXPRESS OR
.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
.\" IN NO EVENT SHALL THE DEVELOPERS BE LIABLE FOR ANY DIRECT, INDIRECT,
.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
.\" (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.8 1999/08/28 00:21:32 peter Exp $
.\" "
.Dd July 21, 1996
.Os
.Dt SPL 9
.Sh 名称
.Nm splbio,
.Nm splclock,
.Nm splhigh,
.Nm splimp,
.Nm splnet,
.Nm splsoftclock,
.Nm splsofttty,
.Nm splstatclock,
.Nm spltty,
.Nm splvm,
.Nm spl0,
.Nm splx
.Nd 割り込み優先度の操作
.Sh 書式
.Fd #include <sys/types.h>
.Fd #include <sys/systm.h>
.Ft intrmask_t
.Fn splbio "void"
.Ft intrmask_t
.Fn splclock "void"
.Ft intrmask_t
.Fn splhigh "void"
.Ft intrmask_t
.Fn splimp "void"
.Ft intrmask_t
.Fn splnet "void"
.Ft intrmask_t
.Fn splsoftclock "void"
.Ft intrmask_t
.Fn splsofttty "void"
.Ft intrmask_t
.Fn splstatclock "void"
.Ft intrmask_t
.Fn spltty "void"
.Ft void
.Fn spl0 "void"
.Ft void
.Fn splx "intrmask_t ipl"
.Sh 解説
.Fn spl
関数ファミリは CPU の割り込み優先度の
.Dq レベル
を設定します。
これはブロックされた優先度レベルの割り込みハンドラの実行を抑制します。
割り込みハンドラによって調査あるいは修正されたであろうデータ領域を
調査あるいは修正するドライバの
.Dq synchronous
部分(ユーザープロセスを代表して実行される部分)で使用されます。
.Pp
通常それぞれの割り込みを使用するドライバは、
config ファイルのキーワードによって 1 つの
割り込み優先度グループに割り当てられます。
例えば、
.Bd -literal -offset indent
device foo0 at isa? port 0x0815 irq 12 tty
.Ed
.Pp
は、割り込み 12 を
.Dq tty
優先度グループに割り当てます。
システムは自動的に
.Em xxx
グループの割り込みを優先度が
.Ns spl Ns Em xxx
\&()
以上の時に呼ばれるように準備します。
.Pp
.Fn splx
関数は割り込み優先度レベルを絶対的な数値に設定します。
これは別の割り込みレベル関数が返した値をローカルの変数に保存して、
後で元の優先度レベルに戻すために
.Fn splx
を使用する事を意図しています。
.Pp
.Fn spl0
関数は全ての割り込みハンドラをブロックしない値に優先度を減少させます。
ただし、AST(非同期システムトラップ)はシステムが
ユーザーモードに戻るまでの間はブロックされます。
.Pp
いろいろなデバイスドライバの割り込み優先度グループの伝統的な割り当ては、
おおよそ次のように分類できます。
.Bl -tag -width Fn splnet
.It Fn splnet
全てのネットワークインターフェイスドライバ。
.It Fn splbio
全ての
.Em バッファ入出力
(つまりディスクなど)のドライバ。
.It Fn spltty
基本的にはネットワーク以外の通信デバイスですが、
事実上はネットワークとディスク以外の全てのドライバ。
.El
.Sh 戻り値
.Fn splx
および
.Fn spl0
以外の全ての関数は、操作前の優先度の値を返します。
.Sh 使用例
以下は、標準的な使用例です。
.Bd -literal
struct foo_softc {
...
int flags;
#define FOO_ASLEEP 1
#define FOO_READY 2
} foo_softc[NFOO];
int
foowrite(...)
{
struct foo_softc *sc;
int s, error;
...
s = spltty();
if (!(sc->flags & FOO_READY)) {
/* 準備ができていません、待機しなければなりません */
sc->flags |= FOO_ASLEEP;
error = tsleep(sc, PZERO, "foordy", 0);
sc->flags &= ~FOO_ASLEEP;
}
sc->flags &= ~FOO_READY;
splx(s);
...
}
void
foointr(...)
{
struct foo_softc *sc;
...
sc->flags |= FOO_READY;
if (sc->flags & FOO_ASLEEP)
/* 誰かが我々を待っています、起こしてください */
wakeup(sc);
...
}
.Ed
割り込みハンドラは
.Em 絶対に
優先度レベルを減少させるべきではない、ということに注意してください。
自動的に、自分のレベルの割り込み優先度に増加させられます。
すなわち、同じグループの全ての割り込みはブロックされます。
.Sh 歴史
割り込み優先度レベルは早期のバージョンの Unix で登場しました。
伝統的には名前ではなく数字が使われていて、そのレベルまでの全てを含んで
(優先度 5 はレベル 5 までの全てをブロックします)いた事が知られています。
これは
.Tn FreeBSD
にはあてはまりません。
伝統的な名前
.Ql level
はいまだに文字
.Ql l
としてそれぞれの関数や変数の名前に反映されています。
しかし、実際にはもはやレベルではなく、
むしろ異なった(部分的に含まれた)関数群がシステムのある期間ブロックされます。
歴史的な番号による方法は単純で順番通りの
割り込み優先度レベルグループであるとみなす事ができます。
.Sh 作者
このマニュアルページは
.ie t J\(:org Wunsch
.el Joerg Wunsch
が書きました。

View file

@ -0,0 +1,90 @@
.\" $NetBSD: store.9,v 1.2 1996/01/09 21:59:27 perry Exp $
.\"
.\" Copyright (c) 1996 Jason R. Thorpe.
.\" All rights reserved.
.\"
.\" This code is derived from software contributed by Kenneth Stailey.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\" notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\" notice, this list of conditions and the following disclaimer in the
.\" documentation and/or other materials provided with the distribution.
.\" 3. All advertising materials mentioning features or use of this software
.\" must display the following acknowledgement:
.\" This product includes software developed for the NetBSD Project
.\" by Jason R. Thorpe.
.\" 4. The name of the author may not be used to endorse or promote products
.\" derived from this software without specific prior written permission.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
.\" IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
.\" BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
.\" LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
.\" AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
.\" OR TORT (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/store.9,v 1.7 1999/08/28 00:21:32 peter Exp $
.\"
.Dd Jan 7, 1996
.Dt STORE 9
.Os FreeBSD
.Sh 名称
.Nm store ,
.Nm subyte ,
.Nm susword ,
.Nm suswintr ,
.Nm suword
.Nd ユーザー空間へのデータの格納
.Sh 書式
.Fd #include <sys/types.h>
.Fd #include <sys/time.h>
.Fd #include <sys/systm.h>
.Fd #include <sys/resourcevar.h>
.Ft int
.Fn subyte "void *base" "int byte"
.Ft int
.Fn susword "void *base" "int word"
.Ft int
.Fn suswintr "void *base" "int word"
.Ft int
.Fn suword "void *base" "int word"
.Sh 解説
.Nm
関数群はユーザー空間へ小さなデータをコピーするようにデザインされています。
.Pp
.Nm
ルーチンは以下の機能を提供します。
.Bl -tag -width "suswintr()"
.It Fn subyte
1 バイトのデータをユーザー空間のアドレス
.Pa base
へ格納します。
.It Fn susword
1 ショートワードのデータをユーザー空間のアドレス
.Pa base
へ格納します。
.It Fn suswintr
1 ショートワードのデータをユーザー空間のアドレス
.Pa base
へ格納します。
この関数は割り込みコンテキスト中でも安全に呼び出せます。
.It Fn suword
1 ワードのデータをユーザー空間のアドレス
.Pa base
へ格納します。
.El
.Sh 戻り値
.Nm
関数は 0 を返しますが、失敗した場合は -1 を返します。
.Sh 関連項目
.Xr copy 9 ,
.Xr fetch 9 .

View file

@ -0,0 +1,535 @@
.\" Copyright (c) 1995 FreeBSD Inc.
.\" All rights reserved.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\" notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\" notice, this list of conditions and the following disclaimer in the
.\" documentation and/or other materials provided with the distribution.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
.\" ARE DISCLAIMED. IN NO EVENT SHALL [your name] OR CONTRIBUTORS BE LIABLE
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
.\" LIABILITY, OR TORT (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/style.9,v 1.32.2.3 2000/08/08 09:56:53 sheldonh Exp $
.\"
.Dd December 14, 1995
.Dt STYLE 9
.Os FreeBSD
.Sh 名称
.Nm style
.Nd カーネルソースファイルのスタイルガイド
.Sh 解説
このファイルは
.Tn FreeBSD
ソースツリーのカーネルソースに好ましいスタイルを明記しています。
これはユーザランドのコードスタイルの手引きでもあります。
.Bd -literal -offset 0i
/*
* FreeBSD のためのスタイルガイドです。
* KNF (Kernel Normal Form, カーネル標準書式) に基づいています。
*/
/*
* とても重要な 1 行のコメントはこのようにします。
*/
/* 殆どの 1 行のコメントはこのようにします。 */
/*
* 複数行にわたるコメントはこのようにします。実際の文章を書きます。実際の
* 段落に見えるように埋めていきます。
*/
.Ed
.Pp
カーネルのインクルードファイル (すなわち、sys/*.h) が初めに来ます。
通常、<sys/types.h> または <sys/param.h> のどちらかが必要ですが、
両方は必要ないでしょう。
<sys/types.h> は <sys/cdefs.h> をインクルードしており、
依存関係は問題ありません。
.Bd -literal -offset 0i
#include <sys/types.h> /* < > 括弧による非ローカルインクルード */
.Ed
.Pp
ネットワークプログラムである場合は、
次にネットワークインクルードファイルを置きます。
.Bd -literal -offset 0i
#include <net/if.h>
#include <net/if_dl.h>
#include <net/route.h>
#include <netinet/in.h>
#include <protocols/rwhod.h>
.Ed
.Pp
それから空行を置き、/usr インクルードファイルを続けます。
/usr インクルードファイルはソートされているべきです。
.Bd -literal -offset 0i
#include <stdio.h>
.Ed
.Pp
グローバルなパス名は /usr/include/paths.h で定義されています。
プログラムにローカルなパス名はローカルディレクトリの pathnames.h に入れます。
.Bd -literal -offset 0i
#include <paths.h>
.Ed
.Pp
それから、空行があって、ユーザインクルードファイルが来ます。
.Bd -literal -offset 0i
#include "pathnames.h" /* " " によるローカルインクルード */
.Ed
.Pp
マクロは大文字であり、( ) 括弧に入れて、副作用を避けるべきです。
.Ql #define
とマクロ名の間にタブ文字を 1 個入れます。
それがある関数のインライン展開である場合は、
関数は全て小文字で定義され、マクロは大文字で同じ名前を持ちます。
マクロが 1 行以上必要な場合は、{ } 括弧を使用します。
バックスラッシュは右揃えします。こうすると読みやすくなります。
マクロが複合文をカプセル化する場合には、それを
.Dq Li do
ループで囲みます。
これにより、
.Dq Li if
文で安全に使用できます。
最後の文の終端のセミコロンは、
マクロではなくマクロの実施時に付けられるべきです。
これにより、清書器やエディタで文法解析しやすくなります。
.Bd -literal -offset 0i
#define MACRO(x, y) do { \e
variable = (x) + (y); \e
(y) += 2; \e
} while(0)
.Ed
.Pp
列挙値は全て大文字を使用します。
.Bd -literal -offset 0i
enum enumtype { ONE, TWO } et;
.Ed
.Pp
構造体の中で変数を宣言する時には、
使用順、サイズ順、アルファベット順にソートして宣言します。
最初の区分は通常適用しませんが、例外があります。
各宣言は、それぞれ独立した行にて行います。
最初の語の後にタブ文字を 1 個置きます、すなわち
.Ql int^Ix;
.Ql struct^Ifoo *x;
です。
.Pp
重要な構造体は、それが使用されるファイルの先頭で宣言されるか、
複数のソースファイルで使用される場合は別のヘッダファイルで宣言されるべきです。
構造体がヘッダファイルで宣言されている場合には、
それら構造体の使用は、宣言とは分けられるべきで、かつ "extern" であるべきです。
.Bd -literal -offset 0i
struct foo {
struct foo *next; /* 使用中の foo リスト */
struct mumble amumble; /* mumble のコメント */
int bar;
};
struct foo *foohead; /* グローバルな foo リストの先頭 */
.Ed
.Pp
可能な時には必ず、あなた自身でリストを操作するのではなく、
.Xr queue 3
マクロを使用してください。
従って、前の例をより良く書くと次のようになります。
.Bd -literal -offset 0i
#include <sys/queue.h>
struct foo {
LIST_ENTRY(foo) link; /* foo リスト用のキューマクロの糊 */
struct mumble amumble; /* mumble のコメント */
int bar;
};
LIST_HEAD(, foo) foohead; /* グローバルな foo リストの先頭 */
.Ed
.Pp
構造体の型に typedef を使用する事は避けてください。
使用してしまうと、
構造体へのポインタを不透明 (opaque) に使用することが、
アプリケーションにとって不可能となります。
通常の struct タグを使用すると、これが可能となり、かつ有益です。
規約が typedef を要求する場合には、その名前を構造体タグに一致させます。
標準 C または
.Tn POSIX
によって明示されたものを除いては、
.Dq Li \&_t
で終る typedef を避けてください。
.Bd -literal -offset 0i
/* 構造体名と typedef を一致させます */
typedef struct _bar {
int level;
} BAR;
.Ed
.Pp
全ての関数はどこかでプロトタイプされます。
.Pp
私的な関数 (すなわち、他のどこでも使用されない関数など) の関数プロトタイプは、
最初のソースモジュールの先頭に置かれます。
単一のソースモジュールにローカルな関数は、
.Ql static
で宣言されるべきです。
.Pp
カーネルの別の部分から使用される関数は、
関連のあるインクルードファイルの中でプロトタイプされます。
.Pp
複数のモジュールでローカルに使用される関数は、
.Pa extern.h
等の分離したヘッダファイルの中に置かれます。
.Pp
一般にソースファイルが K&R 旧約聖書コンパイラで
コンパイル可能である (べき) 時にのみ、
インクルードファイル <sys/cdefs.h> の __P マクロを使用します。
新しいコードでの __P マクロの使用は反対されていますが、
既存のファイルに対する修正はそのファイルの規約と首尾一貫しているべきです。
.Pp
ファイルの 50% かそれ以上を巻き込んだ修正の場合は、
一般にコードは
.Dq 新しいコード
とみなすことができます。
これは既存のコードの慣例を破り、
現在のスタイルガイドラインを使用するのに十分です。
.Pp
カーネルはパラメータの型に関連付けられた名前を持ちます。
例えば、カーネル内でこのように使用します。
.Bd -literal -offset 0i
void function(int fd);
.Ed
.Pp
ユーザランドのアプリケーションに対して見えるヘッダファイルの中では、
可視のプロトタイプは、
型を伴った保護された名前を使用するか、
型だけで名前を使用しないかのどちらかが必要です。
保護された名前の使用がより望ましいです。
例えば、このように使用します。
.Bd -literal -offset 0i
void function(int);
.Ed
.Pp
または
.Bd -literal -offset 0i
void function(int _fd);
.Ed
.Pp
プロトタイプは関数名の行揃えを行なうために、タブの後に追加のスペース文字を
置いても構いません。
.Bd -literal -offset 0i
static char *function(int _arg, const char *_arg2, struct foo *_arg3,
struct bar *_arg4);
static void usage(void);
/*
* 全ての主要なルーチンはそれが何をするのかを簡潔に記述した
* コメントを持つべきです。"main" ルーチンの前のコメントは
* そのプログラムが何をするのかを記述するべきです。
*/
int
main(int argc, char *argv[])
{
long num;
int ch;
char *ep;
.Ed
.Pp
一貫性のために、オプションの解析には getopt が使用されるべきです。
getopt 呼び出しと switch 文では、オプションをソートすべきですが、
switch 文のカスケードの一部の場合は例外です。
switch 文のカスケード要素は FALLTHROUGH コメントを持つべきです。
数値の引数は精度をチェックされるべきです。
到達できないコードは NOTREACHED コメントを持つべきです。
.Bd -literal -offset 0i
while ((ch = getopt(argc, argv, "abn")) != -1)
switch (ch) { /* switch をインデント */
case 'a': /* case はインデントしない */
aflag = 1;
/* FALLTHROUGH */
case 'b':
bflag = 1;
break;
case 'n':
num = strtol(optarg, &ep, 10);
if (num <= 0 || *ep != '\e0') {
warnx("illegal number, -n argument -- %s",
optarg);
usage();
}
break;
case '?':
default:
usage();
/* NOTREACHED */
}
argc -= optind;
argv += optind;
.Ed
.Pp
予約語 (if, while, for, return, switch) の後にスペースを入れます。
何も伴わないかただ 1 つの文を伴う制御文は、{ } 括弧を使用しません。
1 つの文が 複数行である文の場合には、これは許されます。
無限ループは while ではなく for で行ないます。
.Bd -literal -offset 0i
for (p = buf; *p != '\e0'; ++p)
; /* 何もなし */
for (;;)
stmt;
for (;;) {
z = a + really + long + statement + that + needs +
two lines + gets + indented + four + spaces +
on + the + second + and + subsequent + lines;
}
for (;;) {
if (cond)
stmt;
}
if (val != NULL)
val = realloc(val, newsize);
.Ed
.Pp
for ループの各部は空のまま残しても構いません。
異常に複雑なルーチンでない限りは、ブロックの中に宣言を置いてはなりません。
.Bd -literal -offset 0i
for (; cnt < 15; cnt++) {
stmt1;
stmt2;
}
.Ed
.Pp
インデントは 8 文字のタブです。
第 2 レベルのインデントは 4 文字のスペースです。
.Bd -literal -offset 0i
while (cnt < 20)
z = a + really + long + statement + that + needs +
two lines + gets + indented + four + spaces +
on + the + second + and + subsequent + lines.
.Ed
.Pp
空白文字を行末に追加してはいけません。
また、インデントを形成するためには、タブとその後にスペースのみを使用します。
タブが生み出す以上のスペースや、タブの前のスペースは使用しません。
.Pp
{ } 括弧の終了と開始は else と同じ行に置かれます。
必要でない { } 括弧は省いても構いません。
.Bd -literal -offset 0i
if (test)
stmt;
else if (bar) {
stmt;
stmt;
} else
stmt;
.Ed
.Pp
関数名の後はスペースを空けません。
コンマの後にはスペースを持ちます。
.Sq \&(
または
.Sq \&[
の後ろまたは
.Sq \&]
または
.Sq \&)
の前にはスペースを空けません。
.Bd -literal -offset 0i
if (error = function(a1, a2))
exit(error);
.Ed
.Pp
単項演算子はスペースを要求しませんが、二項演算子は要求します。
優先順位が要求する場合または文が ( ) 括弧なしでは混乱する場合以外は、
( ) 括弧は使用しません。
他人はあなたよりも混乱しやすいかもしれないということを覚えておいてください。
あなたは以下を理解できますか?
.Bd -literal -offset 0i
a = b->c[0] + ~d == (e || f) || g && h ? i : j >> 1;
k = !(l & FLAGS);
.Ed
.Pp
成功時には 0 で、または
.Xr sysexits 3
にあらかじめ定義してある値で exit するべきです。
.Bd -literal -offset 0i
exit(EX_OK); /*
* "Exit 0 on success." (成功時は 0 で終了)
* の様に明白なコメントは避けてください
*/
}
.Ed
.Pp
関数の型は、関数自身に先行する行にあるべきです。
.Bd -literal -offset 0i
static char *
function(int a1, int a2, float fl, int a4)
{
.Ed
.Pp
関数の中で変数を宣言する時には、サイズ順に、次にアルファベット順に
ソートして宣言します。
1 行に複数の宣言は可能です。
リンケージのスコープが常にグローバルになるため、
関数の中での関数の宣言は推奨されません。
行が溢れる場合は、型の予約語を再度使用します。
.Pp
宣言時に変数を初期化することによってコードを
不明瞭にしない様に注意してください。
この機能は良く考えて使用してください。
初期化に関数呼び出しを使用しないでください。
.Bd -literal -offset 0i
struct foo one, *two;
double three;
int *four, five;
char *six, seven, eight, nine, ten, eleven, twelve;
four = myfunction();
.Ed
.Pp
他の関数の内部で関数を宣言しないでください。
ANSI C によると、このような宣言は、宣言のネスティングによらず、
ファイルスコープになります。
ローカルスコープに見えるものの中にファイルの宣言を隠すことは好ましくなく、
良いコンパイラは苦情を言います。
.Pp
キャストと sizeof 演算子の後にはスペースを続けません。
この規則は
.Xr indent 1
が理解しないことに注意してください。
.Pp
NULL は、好まれるヌルポインタ定数です。
コンパイラが型を知っている文脈、例えば代入では、
(type *)0 または (type *)NULL の代わりに、NULL を使用します。
他の文脈では、特に全ての関数の引数では、
(type *)NULL を使用します。
(関数のプロトタイプがスコープ外かもしれない場合に、
キャストはいろいろな引数にとって必須で、その他の引数にとっても必要です。)
ポインタは NULL と比較します。例えば、
.Bd -literal -offset 0i
!(p = f())
.Ed
.Pp
ではなく、このように使います。
.Bd -literal -offset 0i
(p = f()) == NULL
.Ed
.Pp
真理値ではない場合、テストには '!' を使用しないでください。
例えば、下記のように使います。
.Bd -literal -offset 0i
if (*p == '\e0')
.Ed
.Pp
下記のようには使いません。
.Bd -literal -offset 0i
if (!*p)
.Ed
.Pp
void * を返すルーチンでは、
戻り値をどのポインタ型にもキャストしてはなりません。
.Pp
.Xr err 3
または
.Xr warn 3
を使用し、勝手に作らないでください。
.Bd -literal -offset 0i
if ((four = malloc(sizeof(struct foo))) == NULL)
err(1, (char *)NULL);
if ((six = (int *)overflow()) == NULL)
errx(1, "Number overflowed.");
return (eight);
}
.Ed
.Pp
古いスタイルの関数宣言はこのようになっています。
.Bd -literal -offset 0i
static char *
function(a1, a2, fl, a4)
int a1, a2; /* int 型も宣言します、デフォルトにしないこと */
float fl; /* double と float の違いに気を付けてください */
int a4; /* 出てきた順に宣言します */
{
.Ed
.Pp
あなたが明確に K&R との互換性を必要とする場合以外は、
ANSI の関数宣言を使用してください。
.Pp
可変個数の引数はこのようにします。
.Bd -literal -offset 0i
#include <stdarg.h>
void
vaf(const char *fmt, ...)
{
va_list ap;
va_start(ap, fmt);
STUFF;
va_end(ap);
/* void 型の関数に return は不要です */
}
static void
usage()
{
/* 関数がローカル変数を持たない場合、空行をいれます */
.Ed
.Pp
fputs/puts/putchar 等ではなく、
.Xr printf 3
を使用してください。
これは速くて大抵はきれいで、言うまでもなくつまらないバグを避けます。
.Pp
使用法 (usage) の文はマニュアルページの書式の様であるべきです。
オペランドの無いオプションが、最初にアルファベット順に、
1 つの[ ] 括弧でくくられます。
オペランドのあるオプションが、アルファベット順に続き、
それぞれを [ ] 括弧でくくられます。
必須の引数が特定の順に続き、オプションの引数が特定の順に続きます。
縦棒
.Pq Sq \&|
は、二者択一のオプションまたは引数を分割し、
同時に使用するオプションと引数は、単一の [ ] 括弧でくくります。
.Pp
.Bd -ragged -offset 0.3i
"usage: f [-aDde] [-b b_arg] [-m m_arg] req1 req2 [opt1 [opt2]]\en"
"usage: f [-a | -b] [-c [-dEe] [-n number]]\en"
.Ed
.Bd -literal -offset 0i
(void)fprintf(stderr, "usage: f [-ab]\en");
exit(1);
}
.Ed
.Pp
新しい中心的なカーネルのコードは、適度にスタイルガイドに従うべきです。
サードパーティが保守するモジュールやデバイスドライバのためのガイドラインは
より緩やかですが、最低限内部的には彼らの一貫したスタイルであるべきです。
.Pp
ソースリポジトリの文体の変更 (空白文字の変更を含む) は困難で、
正当な理由なしには避けるべきです。
リポジトリの中のおおよそ
.Xr style 9
に適合しているコードは、この適合から離れてはなりません。
.Pp
可能な時にはいつでも、
コードはコードチェッカ (例えば、"gcc -Wall" または xlint(1)) を
通過し、発生する警告は最小限となるべきです。
.Sh 関連項目
.Xr indent 1 ,
.Xr err 3 ,
.Xr sysexits 3 ,
.Xr warn 3
.Sh 歴史
このページは
.Tn BSD
4.4-Lite2 release の src/admin/style/style ファイルに大きく基づいていて、
現在の実装と
.Tn FreeBSD
プロジェクトの要望を反映して、更新してあります。

176
ja_JP.eucJP/man/man9/uio.9 Normal file
View file

@ -0,0 +1,176 @@
.\"
.\" Copyright (c) 1997 Joerg Wunsch
.\"
.\" All rights reserved.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\" notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\" notice, this list of conditions and the following disclaimer in the
.\" documentation and/or other materials provided with the distribution.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY EXPRESS OR
.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
.\" IN NO EVENT SHALL THE DEVELOPERS BE LIABLE FOR ANY DIRECT, INDIRECT,
.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
.\" (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/uio.9,v 1.5 1999/08/28 00:21:34 peter Exp $
.\" "
.Dd February 2, 1997
.Os
.Dt UIO 9
.Sh 名称
.Nm uio ,
.Nm uiomove
.Nd デバイスドライバ入出力ルーチン
.Sh 書式
.Fd #include <sys/types.h>
.Fd #include <sys/uio.h>
.Pp
.Bd -literal
struct uio {
struct iovec *uio_iov;
int uio_iovcnt;
off_t uio_offset;
int uio_resid;
enum uio_seg uio_segflg;
enum uio_rw uio_rw;
struct proc *uio_procp;
};
.Ed
.Ft int
.Fn uiomove "caddr_t buf" "int howmuch" "struct uio *uiop"
.Sh 解説
.Fn uiomove
関数は、ユーザ空間とカーネル空間の境界を越えることさえ可能で、
バッファと入出力ベクタ間のデータ転送の実行に使用されます。
.Pp
文字型デバイスのドライバに渡された、あらゆる
.Xr read 2 ,
.Xr write 2 ,
.Xr readv 2
ないし
.Xr writev 2
システムコールの結果として、適切なドライバの
.Em read
または
.Em write
エントリが
.Fa "struct uio"
構造体のポインタを渡されて呼び出されます。
転送のリクエストは、この構造体の中にエンコードされます。
ドライバ自身もこの構造体の中のデータを取り出すために
.Fn uiomove
を使用するべきです。
.Pp
uio 構造体の各フィールドは下記のとおりです。
.Bl -tag -width "uio_iovcntX" -compact
.It Dv uio_iov
処理すべき入出力ベクタの配列です。
散在的な入出力の場合には、一つ以上のベクタとなるでしょう。
.It Dv uio_iovcnt
存在している入出力ベクタの数を示します。
.It Dv uio_offset
デバイスのオフセットです。
.It Dv uio_resid
処理すべきバイト数です。
.It Dv uio_segflg
以下のフラグの中の一つです。
.Bl -tag -width "UIO_USERISPACEX" -compact
.It Dv UIO_USERSPACE
入出力ベクタはプロセスのアドレス空間を指しています。
.It Dv UIO_SYSSPACE
入出力ベクタはカーネルのアドレス空間を指しています。
.It Dv UIO_USERISPACE
入出力ベクタはプロセスのアドレス空間の命令領域を指しています。
.It Dv UIO_NOCOPY
オブジェクト中に既にデータがあり、コピーしません。
.El
.It Dv uio_rw
要求された転送の方向を示し、
.Dv UIO_READ
または
.Dv UIO_WRITE
です。
.It Dv uio_procp
プロセスに関連付けられた
.Li struct proc
構造体へのポインタです。
.Dv uio_segflg
がプロセスのアドレス空間との転送をすべきであると示している場合に
使用されます。
.El
.Sh 具体例
考え方として、ドライバはデータのためのプライベートなバッファの保守を行ない、
このバッファの最大サイズのデータのかたまりの要求を処理します。
下記のバッファの取り扱いはとても簡略化されていて
恐らく動きません(バッファのポインタは部分的な読み込みの場合進みません)し、
uio の取り扱いを実際にやって見せているだけだ、ということに注意してください。
.Bd -literal
/* MIN() の定義はこの中にあります */
#include <sys/param.h>
#define BUFSIZE 512
static char buffer[BUFSIZE];
static int data_available; /* 読み込めるデータ量 */
static int
fooread(dev_t dev, struct uio *uio, int flag)
{
int rv, amnt;
while (uio->uio_resid > 0) {
if (data_available > 0) {
amnt = MIN(uio->uio_resid, data_available);
if ((rv = uiomove((caddr_t)buffer, amnt, uio))
!= 0)
goto error;
data_available -= amnt;
} else {
tsleep(...); /* より良い時期まで待つ */
}
}
return 0;
error:
/* エラーのクリーンアップをここで行なう */
return rv;
}
.Ed
.Sh 戻り値
.Fn uiomove
プロセスのアドレス空間との転送の場合に、
.Xr copyin 9
または
.Xr copyout 9
によって引き起こされた
.Er EFAULT
を返すことがあります。
.Sh 関連項目
.Xr read 2 ,
.Xr readv 2 ,
.Xr write 2 ,
.Xr writev 2 ,
.Xr copyin 9 ,
.Xr copyout 9 ,
.Xr sleep 9
.Sh 歴史
uio の仕組みはある早期のバージョンの
.Ux
で登場しました。
.Sh 作者
このマニュアルページは
.ie t J\(:org Wunsch
.el Joerg Wunsch
が書きました。

View file

@ -0,0 +1,74 @@
.\" $NetBSD: vslock.9,v 1.1 1996/06/15 20:47:29 pk Exp $
.\"
.\" Copyright (c) 1996 The NetBSD Foundation, Inc.
.\" All rights reserved.
.\"
.\" This code is derived from software contributed to The NetBSD Foundation
.\" by Paul Kranenburg.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\" notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\" notice, this list of conditions and the following disclaimer in the
.\" documentation and/or other materials provided with the distribution.
.\" 3. All advertising materials mentioning features or use of this software
.\" must display the following acknowledgement:
.\" This product includes software developed by the NetBSD
.\" Foundation, Inc. and its contributors.
.\" 4. Neither the name of The NetBSD Foundation nor the names of its
.\" contributors may be used to endorse or promote products derived
.\" from this software without specific prior written permission.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
.\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
.\" TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
.\" PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE
.\" LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
.\" CONTRACT, STRICT LIABILITY, OR TORT (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/vslock.9,v 1.4 1999/08/28 00:21:35 peter Exp $
.\"
.Dd Jun 15, 1996
.Dt VSLOCK 9
.Os FreeBSD
.Sh 名称
.Nm vslock ,
.Nm vsunlock
.Nd ユーザー空間のアドレスのメモリへのロックとアンロック
.Sh 書式
.Fd #include <sys/types.h>
.Fd #include <vm/vm.h>
.Fd #include <vm/vm_extern.h>
.Ft void
.Fn vslock "caddr_t addr" "u_int len"
.Ft void
.Fn vsunlock "caddr_t addr" "u_int len" "int dirtied"
.Sh 解説
.Fn vslock
および
.Fn vsunlock
関数は現在実行中のプロセスに属するアドレスの範囲を
メモリ中にそれぞれロックしたりアンロックしたりします。
ロックされる実際のメモリ量はマシンのページサイズの倍数になります。
開始ページナンバーは
.Fa addr
をすぐ前のページ境界に切りつめられ、終了ページは
.Fa addr +
.Fa len
の次のページ境界に切り上げられて計算されます。
この操作に使用されるプロセスのコンテキストはグローバル変数
.Va curproc
を参照します。
.Pp
.Sh 関連項目
.Xr physio 9
.Sh バグ
引数としてプロセスのポインタを渡すべきです。