Когда использовать/proc и когда/dev

Я должен записать модуль ядра, который не является драйвером устройства. Тот модуль будет общаться с некоторыми процессами пространства пользователя. Поскольку я не хочу использовать ioctl (), меня оставляют или с созданием файла в/proc каталоге или с созданием файла устройств в/dev каталоге.

Вопрос: Как я решаю между/proc и/dev. Это просто личный выбор или там любые незаписанные соглашения по использованию этих двух.

5
задан binW 14 July 2010 в 10:24
поделиться

1 ответ

Вам будет очень трудно добиться добавления нового интерфейса в /proc/. Разработчики ядра недовольны тем, что он стал свалкой для разных интерфейсов, и если вы не собираетесь действительно изменять что-то о процессах через /proc/pid/, я думаю, вам будет трудно убедить сообщество ядра принять его.

Файл устройства в /dev/ может быть приемлемым, даже для модулей, которые на самом деле не являются драйверами устройств. (например, /dev/kvm, /dev/pts, /dev/ecryptfs, /dev/fuse, /dev/kmsg, /dev/ptmx и т.д.) Однако файлами устройств слишком часто проще манипулировать с помощью ioctl(), и я думаю, что вы правы, избегая этого, если можете.

Текущая тенденция в кругах разработчиков ядра - это sysfs или пользовательские файловые системы. Подход sysfs основан на семантике одного значения на файл, предназначенной для манипулирования с помощью echo и cat. Это замечательно для пользователей, если это работает для вас. Пользовательские файловые системы позволяют писать очень специфические интерфейсы, поддерживающие двоичные файлы, и fs/libfs.c должен помочь вам написать свою собственную файловую систему под свои нужды. (Я не знаю никого, кто использовал configfs, но я всегда думал, что она выглядит аккуратно. Может быть, он подойдет для вашего модуля?)

6
ответ дан 14 December 2019 в 13:25
поделиться
Другие вопросы по тегам:

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