*参照元 [#b8aabfd1] #backlinks *説明 [#a3287fb0] -パス: [[linux-2.6.33/include/linux/uio_driver.h]] -UIO デバイス定義 --UIO デバイスを UIO カーネルドライバに登録する際に利用する構造体です。 --UIO で制御したいデバイスの登録関数(Probe 関数など)で、 デバイスを定義し、uio_register_device() に渡します。 --UIO カーネルドライバは uio_info の情報に従い、 デバイスの割り込みハンドラやメモリマップ関数などを登録します。 **参考 [#qdb60a26] -UIO デバイス登録関数 --[[linux-2.6.33/uio_register_device()]] -実装例: PCI デバイスを扱うための UIO ドライバの登録関数 CONFIG_UIO_PDRV_GENIRQ で利用可能([[linux-2.6.33/driver/uio/Makefile]] 参照) CONFIG_UIO_PDRV_GENIRQ で利用可能(Makefile 参照) --[[linux-2.6.33/uio_pdrv_genirq_probe()]] --[[linux-2.6.33/driver/uio/Makefile]] *実装 [#y0a42731] /** * struct uio_info - UIO device capabilities * @uio_dev: the UIO device this info belongs to * @name: device name * @version: device driver version * @mem: list of mappable memory regions, size==0 for end of list * @port: list of port regions, size==0 for end of list * @irq: interrupt number or UIO_IRQ_CUSTOM * @irq_flags: flags for request_irq() * @priv: optional private data * @handler: the device's irq handler * @mmap: mmap operation for this uio device * @open: open operation for this uio device * @release: release operation for this uio device * @irqcontrol: disable/enable irqs when 0/1 is written to /dev/uioX */ struct uio_info { struct uio_device *uio_dev; const char *name; const char *version; struct uio_mem mem[MAX_UIO_MAPS]; struct uio_port port[MAX_UIO_PORT_REGIONS]; long irq; unsigned long irq_flags; void *priv; irqreturn_t (*handler)(int irq, struct uio_info *dev_info); int (*mmap)(struct uio_info *info, struct vm_area_struct *vma); int (*open)(struct uio_info *info, struct inode *inode); int (*release)(struct uio_info *info, struct inode *inode); int (*irqcontrol)(struct uio_info *info, s32 irq_on); }; *コメント [#z20ae73d]