Они - на самом деле просто это - интерфейсы. Закодированный "главным" и "незначительным" числом они предоставляют рычаг ядру.
Они прибывают в две разновидности (хорошо, три, но именованные каналы вне объема этого объяснения на данный момент): Устройства посимвольного ввода-вывода и Блочные устройства.
Блочные устройства имеют тенденцию быть устройствами хранения, способными к буферизации вывода и хранить данные для более позднего извлечения.
Устройства посимвольного ввода-вывода являются вещами как звуковые карты или видеокарты или устройства ввода данных как клавиатура и мышь.
В каждом случае, когда ядро загружает корректный драйвер (или во время начальной загрузки, или с помощью программ как udev) это сканирует различные шины, чтобы видеть, присутствуют ли какие-либо устройства, обработанные тем драйвером на самом деле, в системе. Если так, это настраивает устройство, которое 'слушает' на соответствующем главном/незначительном числе.
(Например, Цифровой сигнальный процессор первой звуковой карты, найденной Вашей системой, получает главную/незначительную пару числа 14/3; второе добирается 14,35, и т.д.),
Это до udev для создания записи в /dev
именованный dsp
поскольку устройство посимвольного ввода-вывода отметило главные 14 незначительных 3.
(В значительно более старом или версиях минимального места Linux, /dev/
может не быть динамично загружен, но просто содержать все возможные файлы устройств статически.)
Затем когда программа пространства пользователя пытается получить доступ к файлу, это отмечено как 'символьный специальный файл' с соответствующим главным/незначительным числом (например, Ваш аудиоплеер, пытающийся отправить цифровое аудио в /dev/dsp
), ядро знает, что эти данные должны быть переданы через драйвер, к которому присоединено главное/незначительное число; по-видимому, упомянутый драйвер знает, что сделать с ним в свою очередь.
Смотрите на этот SuperUser названные Вопросы и ответы: Как Вы проверяете, сколько питания USB-порт может поставить?, конкретно мой ответ.
Можно получить использование максимальной мощности lsusb -v
, например:
$ lsusb -v|egrep "^Bus|MaxPower"
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
MaxPower 0mA
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
MaxPower 0mA
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
MaxPower 0mA
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
MaxPower 0mA
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
MaxPower 0mA
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
MaxPower 0mA
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
MaxPower 0mA
Bus 001 Device 003: ID 05e3:0608 Genesys Logic, Inc. USB-2.0 4-Port HUB
MaxPower 100mA
Bus 003 Device 002: ID 046d:c517 Logitech, Inc. LX710 Cordless Desktop Laser
MaxPower 98mA
Bus 001 Device 004: ID 04a9:1069 Canon, Inc. S820
MaxPower 2mA
Bus 001 Device 005: ID 05ac:120a Apple, Inc. iPod Nano
MaxPower 500mA
MaxPower 500mA
Вы могли также взглянуть на usb-devices
:
$ usb-devices | grep 'Product=\|MxPwr'
S: Product=EHCI Host Controller
C: #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=0mA
C: #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=0mA
S: Product=EHCI Host Controller
C: #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=0mA
C: #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=0mA
S: Product=USB Keykoard
C: #Ifs= 2 Cfg#= 1 Atr=a0 MxPwr=98mA
S: Product=USB Receiver
C: #Ifs= 2 Cfg#= 1 Atr=a0 MxPwr=98mA
S: Product=DW375 Bluetooth Module
C: #Ifs= 4 Cfg#= 1 Atr=e0 MxPwr=100mA
S: Product=5880
C: #Ifs= 2 Cfg#= 0 Atr=c0 MxPwr=100mA
Существует a bMaxPower
файл в sysfs папке устройства. Но я не думаю, что это будет очень полезным. Вы сможете найти, что устройство "запросило" 500mA только выполнить стандарт, но не фактическое потребление тока.
Вы, вероятно, уже решили свою проблему или перешли к ней, но эта информация в большинстве случаев доступна на веб-сайте производителя. Это также написано на каждом устройстве USB, которое я использовал.
Реальный ответ для измерения в реальном времени, вероятно, состоит в том, что получить эту информацию из ОС невозможно. Я предполагаю, что все это согласовывается на уровне проводов и фактически контролируется дополнительными регуляторами напряжения / резисторами.
Более того, наличие устройств, специально разработанных для этого, является для меня последним намеком на то, что «простого» решения не существует.