Действительно, очень, очень простой и простой пример того, как реализовать драйверы персонажей, можно найти в drivers/watchdog/softdog.c
Вы можете сравнить свой код с этим примером, который показывает вам, как сделать следующее:
- Чтение с устройства
- Запись на устройство
- Представить интерфейс ioctl через устройство
Хотя softdog - очень полезный инструмент, он так же полезен, как и все остальное. Алан Кокс бросил все вместе, так что это хороший пример более «правильной» реализации.
Если вы можете опубликовать весь источник в своем модуле, мы можем помочь вам выяснить, почему ваша функция вводится не так, как ожидалось.
Обновление:
совершенно приемлемо, чтобы позволить привилегированным пользователям писать на символьные устройства! Повторяю, вполне приемлемо , чтобы позволить привилегированным пользователям писать на символьные устройства! Если бы это было не так, такие вещи, как FUSE, модемы, USB-гаджеты, CD-ROM и другие, потребовали бы root-доступа для использования.
Что вы можете сделать, так это воспользоваться групповым членством. То есть в Ubuntu пользователи, которым разрешено использовать FUSE (файловая система в пространстве пользователя), должны принадлежать к группе 'fuse', которая разрешает детальный доступ к тому, кто может и не может использовать эту функцию. Точно так же в некоторых моих системах используется QRNG (генератор квантовых случайных чисел) ... и (как вы уже догадались) символьное устройство. Мне нужно разрешить PHP доступ к этому устройству, поэтому я:
- Создать группу QRNG
- Убедитесь, что PHP работает как пользователь (не анонимный системный пользователь)
- Добавление пользователей, владеющих приложениями, которым необходим доступ к устройству, в группу QRNG
Надеюсь, это прояснит:)