免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 9640 | 回复: 14
打印 上一主题 下一主题

[应用] Linux usb hub 热插拔 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-09-08 21:01 |只看该作者 |倒序浏览
一个usb hub外接出两个port,请问热插拔程序如何知道是哪个port产生了热插拔事件?
请各位大侠给调线索吧。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
2 [报告]
发表于 2011-09-08 21:34 |只看该作者
只要知道  是哪个设备 插拔 就可以了,为什么要知道是哪个插口呢?  没有什么意义吧

论坛徽章:
0
3 [报告]
发表于 2011-09-08 21:42 |只看该作者
只有知道哪个port有热插拔事件,才能点亮相应的LED灯

论坛徽章:
0
4 [报告]
发表于 2011-09-08 22:27 |只看该作者
应该可以通过sysfs  /sys/bus/usb/devices中设备命名可以知道具体的port

论坛徽章:
0
5 [报告]
发表于 2011-09-09 09:21 |只看该作者
ehci_irq 发生port change detect中断,把事件传到hub_events里处理,

  1.                 /* deal with port status changes */
  2.                 for (i = 1; i <= hub->descriptor->bNbrPorts; i++) {
  3.                         if (test_bit(i, hub->busy_bits))
  4.                                 continue;
  5.                         connect_change = test_bit(i, hub->change_bits);
  6.                         if (!test_and_clear_bit(i, hub->event_bits) &&
  7.                                         !connect_change)
  8.                                 continue;

  9.                         ret = hub_port_status(hub, i,
  10.                                         &portstatus, &portchange);
复制代码
for循环用hub_port_status查询每个port的状态
状态,就是code接下来判断的,做相应处理

论坛徽章:
0
6 [报告]
发表于 2011-09-18 13:48 |只看该作者
把点灯操作做到内核模块不好吧,我是想有没有什么参数可以直接指示usb hub port的状态。
而这个指示状态的参数是否可以直接作为参数来调用用户空间的hotplug?

论坛徽章:
0
7 [报告]
发表于 2011-09-18 14:09 |只看该作者
如果用户空间不知道具体哪个port发生了热插拔事件,那么会导致mount和unmount错乱吧?

论坛徽章:
0
8 [报告]
发表于 2011-09-19 11:42 |只看该作者
白回复了,根本都不看代码的,
我认为应用程序没必要知道是哪个port,
led也应该是在kernel里完成的,kernel本身也有led driver
到了应用层,就只用管设备名,一个hub上接了2个U盘,mount时又不需要告诉它到底是哪个port的U盘,mount也不需要这个参数,要是只想知道设备插入拔出了,一般看uevent也可以知道。

论坛徽章:
0
9 [报告]
发表于 2011-09-20 22:54 |只看该作者
mount是不需要知道,那么如果一个U盘拔掉之后,unmount时难道直接将两个U盘都unmount的吗?

论坛徽章:
0
10 [报告]
发表于 2011-09-21 09:35 |只看该作者
如果一个是插卡,一个是插U盘,拔了一个,你是用眼睛看板子上少了哪个拔了就umount哪个?
你还不如装个udev或mdev
看/sys下文件的变化,设备添加删除device_add, device_del, 有uevent事件,可知道是哪个设备插入或拔出
如果你不知道哪个拔出了,那怎么知道哪个插入了呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP