AIB*_*AIB 11 linux memory kernel memory-management linux-device-driver
在尝试估计内核模块(通常是设备驱动程序)消耗的内存量时,我尝试使用size实用程序,该实用程序给出.ko(.bss,.data,.text等)的静态内存区域的大小.所以我希望这些值的总和与插入模块后立即由lsmod命令给出的输出完全相等.
在init()函数中没有执行动态内存分配(kmalloc或vmalloc)以确保它不会导致差异.那么为什么会出现不匹配?
奇怪的是,大多数时候发现不匹配是固定的!
命令输出如下所示
text data bss dec hex filename
172 448 1024016 1024636 fa27c chardev.ko
Run Code Online (Sandbox Code Playgroud)
Module Size Used by Tainted: P
chardev 1025040 0 - Live 0xc009d000
Run Code Online (Sandbox Code Playgroud)
您提到 init 函数中没有完成分配,但这是否考虑到诸如 register_chrdev(9) 之类的为设备实例内部分配内存的调用?关于这是一个持续差异的评论让我想知道这是否可能是原因。