![1001 个连接后 /dev/bus/usb 会发生什么](https://linux22.com/image/130432/1001%20%E4%B8%AA%E8%BF%9E%E6%8E%A5%E5%90%8E%20%2Fdev%2Fbus%2Fusb%20%E4%BC%9A%E5%8F%91%E7%94%9F%E4%BB%80%E4%B9%88.png)
/dev/总线/USB/*/*列出 Alpine Linux 上连接的所有 USB 设备。例如电话可以是/dev/bus/usb/001/009。当该电话重新连接时,它将/dev/bus/usb/001/010,即它增加。
我的问题是 1001 个连接后会发生什么?
/dev/bus/usb/001/009
010
...
100
...
500
...
999
???
会不会???去1000?它会创建一个新文件夹吗003在/dev/bus/usb/下?
这是为了操纵输出USB 设备和LSSB。获取 Vendor 和 ProdID 在我的案例中并不罕见。
我不想插拔 USB 电缆 1000 次!
答案1
如果我读得正确的话https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git/tree/drivers/usb/core/hub.c#n2030(名为 的函数的代码choose_devnum
),它可能会比该值早得多换行,实际上在值 127 处,然后返回到 1:
/* Try to allocate the next devnum beginning at
* bus->devnum_next. */
devnum = find_next_zero_bit(bus->devmap.devicemap, 128,
bus->devnum_next);
if (devnum >= 128)
devnum = find_next_zero_bit(bus->devmap.devicemap,
128, 1);
bus->devnum_next = (devnum >= 127 ? 1 : devnum + 1);
稍后,仅当小于 128 时,该bus->devnum
属性才会真正设置。devnum