以ohcd为例,其urb的dequeue函数调用了usb_hcd_giveback_urb()函数,把urb由hcd回交了core。然而在usb_hcd_giveback_urb()中有这么一句,urb->complete (urb, regs);调用urb处理的回调函数,进行处理。 而设备驱动的回调函数难道不是通过hcd_unlink_urb()的调用来取消一个urb的吗?可是在这其中这么一句却把我弄糊涂了 hcd->driver->urb_dequeue (hcd, urb); 这不是个死循环吗?哪位高手能帮忙解答一下?谢谢~
by jino - 内核/嵌入技术 - 2006-06-05 17:23:52 阅读(470) 回复(0)
我在学习写linux下的usb设备驱动,我的内核版本是2.6.x。 在使用urb进行bulk读操作时,我该如何判断是否已经读成功呢?在什么时候把读成功的数据返回给用户空间呢? 我将usb设备映射为字符设备,在Read函数中,我首先创建urb,然后初始化,提交。 urb = usb_alloc_urb(0, GFP_KERNEL); buf = usb_buffer_alloc(dev->udev, count, GFP_KERNEL, &urb->transfer_dma); usb_fill_urb(urb, dev->udev, usb_rcvbulkpipe(dev->udev, dev...
我的系统是ARM9(s3c2410)+linux2.4.18,我现在要做的是让嵌入式usb host端能自动的挂载U盘,即能做到即插即用,不用再手工挂载了。请大家建议一下该如何做呢! [ 本帖最后由 liuchang1881 于 2006-5-21 10:33 编辑 ]
[ 45.524552] usb 1-1: new full speed usb device using uhci_hcd and address 3 [ 45.720482] usb 1-1: configuration #1 chosen from 1 choice [ 45.770581] usb 1-1: New usb device found, idVendor=4612, idProduct=04b4 [ 45.770614] usb 1-1: New usb device strings: Mfr=4, Product=3, SerialNumber=2 [ 45.770653] usb 1-1: Product: usb KEY [ 45.770671] usb 1-1: Manufacturer: HengTai [ 45.770686] ...
小弟要做一个usb驱动 但不知道工作量有多大 看Linux下面usb目录下有很多源程序 不知道usb驱动属于字符设备驱动还是块设备驱动 usb驱动相比网络设备驱动 那个工作量更大些 谢谢 另外编写usb驱动怎么入手 怎么上手呢 能不能推荐资料书籍或者bbs论坛