Linux内核模块是否有内存限制?

时间:2010-08-03 07:24:20

标签: linux-kernel linux-device-driver

Linux内核模块对内存使用有任何限制,即代码段大小或全局内存量或任何东西。

1 个答案:

答案 0 :(得分:5)

  • 在2.6.35中,如果要加载的模块长度超过64 MB,则load_module()将失效:http://lxr.linux.no/#linux+v2.6.35/kernel/module.c#L2118
  • vmalloc()用于为模块分配空间 - 如果您尝试分配的内容多于物理内存中可用的页面,则会失败(这反过来可能只是内存较低的嵌入式内容的问题)
  • 此外,使用kzalloc()(以及kmalloc())。根据使用的分配器(SLAB,SLOB,SLUB),也可能存在限制。 SLAB定义了一个KMALLOC_MAX_SIZE,它定义了一次调用kmalloc()就可以分配的最大字节数。