b3aee9efe3
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>
127 lines
4.2 KiB
Groff
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
|
|
によって書かれました。
|