Старший номер указывает, какой драйвер обрабатывает какой файл устройства. Младший номер используется только самим драйвером для определения того, на каком устройстве он работает, на тот случай, если драйвер обрабатывает более одного устройства.
Добавление драйвера в вашу систему означает его регистрацию в ядре. Это синоним присвоения ему старшего номера во время инициализации модуля. Вы делаете это с помощью функции register_chrdev, определенной в linux / fs.h.
int register_chrdev(unsigned int major, const char *name,
struct file_operations *fops);
где unsigned int major - это основной номер, который вы хотите запросить, const char * name - это имя устройства, которое будет отображаться в / proc / devices и struct file_operations * fops - указатель на таблицу file_operations для вашего Водитель. Отрицательное возвращаемое значение означает, что регистрация не удалась. Обратите внимание, что мы не передали младший номер в register_chrdev. Это потому, что ядро не заботится о младшем числе; только наш водитель использует его.
С здесь