1. 「サイズ」は、カーネル モジュールが占有するメモリの量です。つまり、メモリにロードされるモジュールのコード、データ、およびおそらくいくつかの特別なセクションのサイズです。モジュール自体によって動的に割り当てられたメモリは含まれないことに注意してください。
2. メジャー/マイナー番号に関しては、特定の制限に依存しない方がよいでしょう。たとえば、キャラクター デバイス用にそのような番号を予約する必要がある場合は、 を使用できますalloc_chrdev_region()
。
との定義からMAJOR()
、メジャー番号 (0..4095 のようです) をエンコードするために 12 ビットが使用され、マイナー番号の場合は 20 ビットが使用されることになります。「The Linux Device Drivers」本 (第 3 版) の第 3 章の「デバイス番号の内部表現」セクションでも、次のことが確認されています。MINOR()
MKDEV()
<linux/kdev_t.h>
カーネルのバージョン 2.6.0 では、dev_t は 32 ビット量で、12 ビットがメジャー番号用に、20 ビットがマイナー番号用に確保されています。もちろん、コードは、デバイス番号の内部編成についていかなる仮定も行うべきではありません。代わりに、linux/kdev_t.h にある一連のマクロを使用する必要があります。
まだ読んでいない場合は、上記のLinux デバイス ドライバーの本を読むことをお勧めします。場所によっては少し時代遅れですが、それでも非常に便利です。