Ошибка отчета USB HID (намеренно? )не позволяет джойдеву правильно вычислять значения осей

Попробуйте дать краткий, но, надеюсь, понятный ответ. Применяется только к современному ядру Linux.

Существуют struct tasks, используемые внутри ядра как минимальная планируемая единица, которая всегда создается кодом ядра с использованием кольца 0 и начинает работать в кольце 0, но может или не может переключиться на кольцо 3 позже или переключиться обратно на кольцо 0 (с помощью специфичных для платформы инструкций системного вызова ).

Задача имеет много ресурсов или, скажем, свойств, наиболее важными из которых являются объем памяти, идентификатор задачи (tid при просмотре сверху -пространство имен pid уровня ), идентификатор группы задач (pid при просмотре из верхний уровень пространства имен ). Хотя в кольце3 задачи, очевидно, не могут получить прямой доступ даже к своим собственным struct task, но, по крайней мере, те свойства, которые я только что упомянул, доступны для кольца3 ядром через /procfs. Но современный kenerl может представить это странным образом, например, /proc/[pid]/statusиспользовать слово «Pid» для обозначения идентификатора задачи, просматриваемого из пространства имен pid, связанного с его экземпляром procfs.

Задача может совместно использовать или не использовать эти свойства с другими задачами (, кроме tid, просматриваемых из верхнего -уровня пространства имен pid ), например, они могут совместно использовать одно и то же пространство памяти или иметь одну и ту же группу задач. я бы.

Теперь пользователи в кольце 3 или, скажем, пользовательском пространстве, могут изобретать концепции «потока» и «процесса». Но поскольку они являются чисто изобретением пользовательского пространства, разные люди/учебники могут использовать разную терминологию.Поэтому здесь мы говорим только об общеупотребительной терминологии.

ОС -Поток (поток ):синоним задачи.

Ядро -Поток :задача, которая никогда не переключается на кольцо 3 и всегда разделяет пространство памяти с ядром.

ОС -Процесс (процесс ):Ядро не отслеживает существование процесса, человек просто определяет его как одну или несколько задач, имеющих одинаковый идентификатор группы задач (pid, просматриваемый с верхнего -уровня pid пространство имен ). Как только все эти нити умерли, процесс исчез в человеческом сознании.

Один важный забавный факт заключается в том, что, как вы должны заключить из вышеприведенных определений, ОС -Процесс может содержать один или несколько ОС -Потоков, эти ОС -Потоки или задачи в одна ОС -Процесс на самом деле более ограничен ядром в отношении свойств, которые они могут и совместно использовать.

Как только задача создана, она принадлежит какому-то определенному процессу, и это отношение никогда не может измениться, пока оно не умрет.

Задачи, принадлежащие одному процессу, должны совместно использовать одно и то же пространство памяти.

Задачи, принадлежащие одному процессу, не могут оставаться в другом пространстве имен пользователя или пространстве имен pid, они должны быть общими.

1
20.05.2020, 03:10
1 ответ

Я наткнулся на репозиторий github человека, который уже написал модуль ядра, (я полагаю, что )исправляет отчет HID, чтобы он правильно указывал на правильные байты. Я протестировал его, и он работает очень хорошо, поэтому, если вы просто хотите, чтобы ваше оборудование работало, вот оно:

https://github.com/walterschell/tflight4

1
18.03.2021, 23:34

Теги

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