当前位置: 技术问答>linux和unix
usb驱动与umount的问题!读懂USB驱动的大牛过来瞧瞧啊
来源: 互联网 发布时间:2016-03-09
本文导语: 最近一直在看usb驱动的代码,希望能在驱动中做一个标记,用来告诉应用程序,这个时候可以umount拉,不会有device busy的console提示了。有两个问题,不得解,希望得到各位帮助: 1 usb_stor_control_thread()函数的for...
最近一直在看usb驱动的代码,希望能在驱动中做一个标记,用来告诉应用程序,这个时候可以umount拉,不会有device busy的console提示了。有两个问题,不得解,希望得到各位帮助:
1 usb_stor_control_thread()函数的for循环中,如果程序停在if(down_interruptible(&us->sema))这句,说明usb没有数据通讯,这个时候可以通知umount拉。这样想对吗?需要在scsi的模块代码中找标记吗?主要是这个问题。
2 如果做了标记,要传到用户层,netlink socket,klog,还是/proc/文件,用什么方法比较简便些呢?
1 usb_stor_control_thread()函数的for循环中,如果程序停在if(down_interruptible(&us->sema))这句,说明usb没有数据通讯,这个时候可以通知umount拉。这样想对吗?需要在scsi的模块代码中找标记吗?主要是这个问题。
2 如果做了标记,要传到用户层,netlink socket,klog,还是/proc/文件,用什么方法比较简便些呢?
|
牛人。学习,我也在看usb驱动。还没有到楼主的那个程度。
|
或许有一个哥们可以帮到你:
http://blog.csdn.net/fudan_abc
试一试:)
http://blog.csdn.net/fudan_abc
试一试:)
|
关注
|
1.这么理解有问题,这里的if(down_interruptible(&us->sema))表示当前usb没有获得信号量,被中断了而以。在第二个for循环中设置当前线程状态为TASK_INTERRUPTIBLE后,还需要执行kthread_should_stop()来等待内核线程的stop通知,真正的退出条件应该是在usb_stor_release_resources中的kthread_stop调用后,通知usb的内核线程可以退出了。
2.内核向用户层传输数据的方式你说的都可以,如果只是一个指令用IOCTL就可以了。
PS:如果是想不出现设备buzy的提示,不是这样通过标志就能准确的退出的。
2.内核向用户层传输数据的方式你说的都可以,如果只是一个指令用IOCTL就可以了。
PS:如果是想不出现设备buzy的提示,不是这样通过标志就能准确的退出的。