doc/ja_JP.eucJP/man/man9/BUS_SETUP_INTR.9
SUZUKI Koichi b3aee9efe3 Catch up with 5.4-Release.
Submitted by: Nobuyuki Koganemaru <n-kogane at syd odn ne jp>
Reviewed by: kano at na rim or jp
             Yoshihiko Sarumaru <mistral at imasy or jp>
2005-07-11 13:46:23 +00:00

127 lines
4.2 KiB
Groff

.\" Copyright (c) 2000 Jeroen Ruigrok van der Werven
.\" 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 THE AUTHOR 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/BUS_SETUP_INTR.9,v 1.17.2.1 2005/01/10 23:06:34 keramida Exp %
.\"
.\" $FreeBSD$
.Dd January 6, 2005
.Dt BUS_SETUP_INTR 9
.Os
.Sh 名称
.Nm BUS_SETUP_INTR ,
.Nm bus_setup_intr ,
.Nm BUS_TEARDOWN_INTR ,
.Nm bus_teardown_intr
.Nd 割り込みハンドラの作成と接続および破壊
.Sh 書式
.In sys/param.h
.In sys/bus.h
.Ft int
.Fn BUS_SETUP_INTR "device_t dev" "device_t child" "struct resource *irq" "int flags" "driver_intr_t *intr" "void *arg" "void **cookiep"
.Ft int
.Fn bus_setup_intr "device_t dev" "struct resource *r" "int flags" "driver_intr_t handler" "void *arg" "void **cookiep"
.Ft int
.Fn BUS_TEARDOWN_INTR "device_t dev" "device_t child" "struct resource *irq" "void *cookiep"
.Ft int
.Fn bus_teardown_intr "device_t dev" "struct resource *r" "void *cookiep"
.Sh 解説
.Fn BUS_SETUP_INTR
メソッドは、資源マネージャの
.Xr BUS_ALLOC_RESOURCE 9
メソッドによって以前に割り当てられた割り込みに対し、
割り込みハンドラを生成してアタッチします。
.Fa flags
.In sys/bus.h
で見つかり、割り込みの大まかな種類を与えます。
また、
.Fa flags
はデバイスドライバの特性についての信頼できる情報を、割り込みハンドラに伝えます。
.Dv INTR_FAST
はそのハンドラが時間にクリティカルな関数のための
ハンドラであることを意味します。
これらのハンドラのスピードアップのために特別な注意がはらわれます。
これの利用は
.Dv INTR_EXCL
を暗に含みます。
.Dv INTR_EXCL
はそのハンドラをこの割り込みのための排他的なハンドラとして記録します。
.Dv INTR_MPSAFE
はその割り込みハンドラはプリエンプティブな環境で適切に
振舞う (``SMP セーフ'') こと、および ``ジャイアントロック'' mutex によって
保護される必要がないことを、スケジューラに通知します。
.Dv INTR_ENTROPY
はその割り込みがエントロピの良い供給源であるとして記録します。
これは、エントロピデバイス
.Pa /dev/random
によって使用されることができます。
ハンドラ
.Fa intr
は唯一の引数
.Fa arg
の値を伴なって呼び出されます。
.Pp
.Fa cookiep
引数は、
割り込みの確立が成功した場合に、
.Fn BUS_SETUP_INTR
が書込む親のバスが使用するクッキーである
.Vt "void *"
型へのポインタです。
ドライバ作成者は、このクッキーが 0 ではないことを仮定することが出来ます。
nexus ドライバは失敗時に
.Fa cookiep
に 0 を書込みます。
.Pp
割り込みハンドラは、
.Fn BUS_TEARDOWN_INTR
によってデタッチされます。
正しい割り込みハンドラを破棄するために、クッキーが
.Fn BUS_TEARDOWN_INTR
に渡される必要があります。
一度
.Fn BUS_TEARDOWN_INTR
が戻ると、その割り込み関数は有効ではなくなり二度と呼び出されないことが
保証されます。
.Pp
これらの関数への呼び出しに交差して mutex が保持されていることは認められません。
.Sh 戻り値
成功時には 0 が返され、それ以外の場合は適切なエラーが返されます。
.Sh 関連項目
.Xr random 4 ,
.Xr device 9 ,
.Xr driver 9
.Sh 作者
.An -nosplit
このマニュアルページは、
.An Doug Rabson
.Aq dfr@FreeBSD.org
によって書かれた、
.Fn BUS_CREATE_INTR
および
.Fn BUS_CONNECT_INTR
のマニュアルページを基に、
.An Jeroen Ruigrok van der Werven
.Aq asmodai@FreeBSD.org
によって書かれました。