Raj*_*lli 16 device-driver linux-device-driver linux-kernel
我找到devm_kzalloc()并kzalloc()在设备驱动程序programmong.但我不知道何时/何地使用这些功能.任何人都可以请说明这些功能的重要性及其用法.
pro*_*ski 33
kzalloc()分配内核内存kmalloc(),但它也零初始化分配的内存.devm_kzalloc()管理kzalloc().分配有托管功能的内存与设备关联.当设备与系统分离或卸载设备的驱动程序时,将自动释放该内存.如果为设备分配了多个受管资源(内存或某些其他资源),则首先释放最后分配的资源.
托管资源非常有助于确保驱动程序的正确操作,无论是在任何时候初始化失败,还是在设备删除后成功初始化.
请注意,托管资源(无论是内存还是其他资源)都应用于负责探测设备的代码中.对于用于打开设备的代码,它们通常是错误的选择,因为设备可以在不与系统断开的情况下关闭.关闭设备需要手动释放资源,这会破坏托管资源的用途.
分配的内存kzalloc()应该被释放kfree().分配的内存将devm_kzalloc()自动释放.它可以被释放devm_kfree(),但它通常表明托管内存分配不适合任务.
| 归档时间: |
|
| 查看次数: |
19982 次 |
| 最近记录: |