1. «Размер» - это объем памяти, который занимает модуль ядра, то есть размер кода, данные и, возможно, некоторые специальные разделы модуля, загруженного в память. Обратите внимание, что динамическая память, выделяемая самим модулем, там не включена.
2. Что касается основных/младших номеров, лучше не полагаться на конкретные лимиты. Если вам необходимо зарезервировать такие номера для ваших персональных устройств, например, вы можете использовать alloc_chrdev_region()
.
Из определений MAJOR()
, MINOR()
и MKDEV()
в <linux/kdev_t.h>
, то отсюда следует, что 12 бит используются для кодирования основного номера (0..4095, кажется), 20 бита - для детей. Раздел «Внутреннее представление чисел устройства» главы 3 «Драйверы устройств Linux» книги (3-е изд.) Подтверждает, что тоже:
В версии 2.6.0 ядра, dev_t является 32- бит с 12 бит, выделенными для основного номера, и 20 для младшего номера. Конечно, ваш код не должен делать никаких предположений о внутренней организации номеров устройств; он должен, вместо этого, использовать набор макросов, найденный в Linux/kdev_t.h
Если вы еще не сделали этого, я рекомендовал бы взглянуть на Linux Device Drivers book упомянутые выше. Хотя в некоторых местах он немного устарел, он по-прежнему очень полезен.
спасибо большое .. это помогло мне .. – GVK