参照元†
- UIO の割り込みハンドラ
- 割り込みの処理回数をカウントする。
- もしユーザ定義の割り込みハンドラが定義されていれば、呼び出す。
- int irq
- void *dev_id
- UIO のデバイス情報へのポインタを void * にキャストしたもの。
返り値†
/**
* 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 のデバイス情報に変換し、ユーザ定義のハンドラを呼び出す。
if (ret == IRQ_HANDLED)
uio_event_notify(idev->info);
- ユーザ定義ハンドラによって割り込みが処理されていれば、
read() で返す割り込み回数の値を更新する。
return ret;
}
コメント†