Что такое HID_MAX_USAGES

Вопрос: что такое HID_MAX_USAGES? Для чего его используют? И почему значение такое маленькое?

(кодовая строка:

#define HID_MAX_USAGES                        12288

в

/usr/src/linux/include/linux/hid.h 

Справочная информация: мне нужно установить значение 32 КБ и повторно скомпилировать Ядро. В противном случае моя игровая мышь не распознается Ubuntu. Поэтому я хочу знать, для чего это значение хорошо, прежде чем менять мою систему.

3
задан 4 February 2013 в 17:28

1 ответ

Я думаю, что 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.

0
ответ дан 4 February 2013 в 17:28

Другие вопросы по тегам:

Похожие вопросы: