Как получить доступ к динамическому символьному устройству из пространства пользователя?
register_chrdev()
Функция в ядре регистрирует символьное устройство:
int register_chrdev(unsigned int major, const char*name,
struct file_operations*ops));
Если major
является 0
ядро динамически распределяет старший номер, а функция регистра возвращает его.
Теперь давайте предположим, что модуль foo.ko
хочет использовать /dev/foo
с динамическим основным номером. Как пользовательское пространство узнает, какой основной номер передать mknod
создавать /dev/foo
?
1 ответ
Как только символьное устройство регистрируется с динамическим старшим номером, соответствующая информация появляется в /proc/devices
и, таким образом, может быть извлечено приложением / сценарием пользовательского пространства для создания соответствующего узла.
В качестве лучшего примера вы можете обратиться к книге драйверов устройств Linux (3-е издание), например, к сценарию для чтения /proc/devices
показано на этой странице.