Вопрос: что такое HID_MAX_USAGES? Для чего его используют? И почему значение такое маленькое?
(кодовая строка:
#define HID_MAX_USAGES 12288
в
/usr/src/linux/include/linux/hid.h
Справочная информация: мне нужно установить значение 32 КБ и повторно скомпилировать Ядро. В противном случае моя игровая мышь не распознается Ubuntu. Поэтому я хочу знать, для чего это значение хорошо, прежде чем менять мою систему.
Я думаю, что HID_MAX_USAGES
настолько «мал», что вызывает дескриптор отчета HID-устройства в тех случаях, когда hid-устройства сообщают правильный размер, размер намного меньше, и в этом случае его дескриптор не будет превышать жестко закодированный HID_MAX_USAGES
предел.
Когда у вас проблема с клавиатурой или мышью не работает, и после перекомпиляции ядра с увеличенным HID_MAX_USES
ваше устройство начинает работать. Вероятнее всего, это связано с тем, что нижний предел отклонит синтаксический анализ сообщаемого дескриптора.
После прочтения и поиска в Google я проверил некоторые драйверы Linux, которые, казалось, переопределяли то, что сообщало само устройство. Например. если устройство сообщило, что оно имеет 2 ^ 15, драйвер может переопределить его до максимально допустимого значения HID_MAX_USAGES
, или с использованием фактического размера устройства.
Столь кратко суммируя, в основном то, что происходит, дескриптор отчета hid-устройства указывает чрезмерно большое количество использований потребителя (например, 2 ^ 15), что больше, чем HID_MAX_USAGES
. Это предотвращает правильный анализ описанного дескриптора и, скорее всего, устройство или его части не будут работать.
Я сам использовал грязный хак инкремента HID_MAX_USAGES
в производственной среде. Насколько грязно я спросил без хороших ответов. Но с моими знаниями я вижу, что взлом оставляет больший след памяти, я не изучал, может ли это немного повредить производительности. Я не мог видеть, как взлом представляет какую-либо угрозу безопасности. (Пожалуйста, исправьте меня, если я ошибаюсь.)
Я считаю, что увеличение HID_MAX_USAGES
в отчете об ошибках не может быть и речи для любого основного ядра, это не оптимальное решение. Скорее, я бы предложил вам представить подробный отчет об ошибке о том, что ваши hid-клавиатура \ мыши не работают. Вы также можете следить за производством вашего продукта, чтобы добавить надлежащую поддержку в драйвере.
Extended ( source ):
On Tue, 21 May 2013, Christian Ohm wrote:
> Is there any reason why HID_MAX_USAGES shouldn't be more than 12288?
Well, the reasoning is a mixture of current implementation, and
reasonability.
- we currently have statically allocated arrays on a per-parser basis, for
parsing usages and collection indices. If the number of max usages is
going to grow in an uncontrolled manner, we'll have to change the way
our parser works (which is not impossible, of course).
- most of the ocurences of huge max usages being presented by the devices
have actually turned out to be bogus and could have been fixed by
patching the report descriptor in order to reflect the real behavior of
the device
Thanks,
--
Jiri Kosina
SUSE Labs
Приведенный выше фрагмент взят из руководства подсистемы ядра hid.