*参照元 [#fe11fc6b]
#backlinks

*説明 [#qa245f97]
-パス: [[linux-2.6.33/drivers/uio/uio.c]]

-FIXME: これは何?
--説明
-UIO の割り込みハンドラ
--割り込みの処理回数をカウントする。
--もしユーザ定義の割り込みハンドラが定義されていれば、呼び出す。


**引数 [#kdd542e1]
-int irq
--割り込み番号。
-void *dev_id
--UIO のデバイス情報へのポインタを void * にキャストしたもの。


**返り値 [#idae6256]
-irqreturn_t
--割り込みハンドラの処理結果。
--通例では、割り込みを処理した場合は IRQ_HANDLED、
処理していない場合は IRQ_NONE を返す。
--[[linux-2.6.33/irqreturn_t]]


**参考 [#uf0e4b8a]


*実装 [#td61a201]
 /**
  * uio_interrupt - hardware interrupt handler
  * @irq: IRQ number, can be UIO_IRQ_CYCLIC for cyclic timer
  * @dev_id: Pointer to the devices uio_device structure
  */
 static irqreturn_t uio_interrupt(int irq, void *dev_id)
 {
 	struct uio_device *idev = (struct uio_device *)dev_id;
 	irqreturn_t ret = idev->info->handler(irq, idev->info);
 
-UIO のデバイス情報に変換し、ユーザ定義のハンドラを呼び出す。
--[[linux-2.6.33/uio_device]]
--ハンドラの第二引数(idev->info)の型は struct uio_info 型である。
--[[linux-2.6.33/uio_info]]

 	if (ret == IRQ_HANDLED)
 		uio_event_notify(idev->info);
 
-ユーザ定義ハンドラによって割り込みが処理されていれば、
read() で返す割り込み回数の値を更新する。
--[[linux-2.6.33/uio_event_notify()]]

 	return ret;
 }


*コメント [#sca3fa85]

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS