Описание «модуль ядра пользовательского пространства» является противоречием в терминах. :Либо что-то работает в пользовательском пространстве, либо оно работает в ядре, но не может работать ни в том, ни в другом, и вы не можете запускать модули ядра в пользовательском пространстве..
Тем не менее, можно писать драйверы устройств в пользовательском пространстве, используя довольно общие API-интерфейсы ядра (, которые работают в пространстве ядра, независимо от того, являются ли они модулями или нет ), и реализация фактической функциональности драйвера устройства в пользовательском пространстве. Драйверы устройств, использующие libusb
, spidev
или i2cdev
, являются такими примерами, :они используют библиотеку для доступа к хорошо -известным API ядра или для прямого доступа к API, но логика драйвера устройства работает в пользовательском пространстве.
Другим похожим примером является fuse:с использованием фиксированных API-интерфейсов ядра, вы можете реализовать свою собственную файловую систему в пользовательском пространстве.
Если вам нужны примеры, поищите в Google драйверы устройств, использующие эти API. Но они по-прежнему будут примером «драйверов устройств пользовательского пространства», а не «драйверов устройств ядра пользовательского пространства»,поэтому я не уверен, что это то, что вы хотите.
Если вы хотите написать что-то, что работает в пространстве ядра, вам нужно научиться писать модуль ядра.
Кредит принадлежит пользователю, который ответил на вопрос в комментарии (, но затем комментарий исчез ).
Не ,
, а -
внутри [...]
вызывает проблему, потому что создает диапазон. Следовательно, экранирование ,
не обязательно, нам просто нужно убедиться, что -
является первым или последним в наборе.