我如何知道我应该在何时或何时使用kmalloc()在设备驱动程序中为设备分配内存?
是在初始化期间还是在打开期间?在malloc中,wil kmalloc会动态分配内存吗?
答案 0 :(得分:1)
这取决于您何时需要它。没有硬性规定。
例如,在linux kernel中的i2c
驱动程序中,有两个kmalloc
调用,初始化或任何特定函数都没有。
是的,它的作用与用户空间malloc
类似,并动态分配内存。
答案 1 :(得分:1)
通常,当您需要内核空间中的物理内存时,可以使用kmalloc()。 您可以在init / open期间使用它,具体取决于您的使用案例。 如果您在init()中使用kmalloc但从不使用该设备,那么分配的内存就是浪费。 如果在open()中使用kmalloc,则实际使用分配的内存,因为仅在使用设备时才分配内存。
另外,请注意,如果您不需要物理上有争议的内存分配,可以在内核中使用vmalloc()。