为什么在内核模块编程中使用__exit?

Why is __exit used in kernel module programming?

如果在模块内置到内核中或不允许卸载模块的情况下不会有任何内存分配,那么为什么首先要使用它?如果我wrong/assuming有什么不对的地方请指正。

编辑 - 我也无法理解 __exit 的用途。 module_exit() 应该够不够?

简单的回答:它在那里,所以如果你的模块被证明是不可卸载的(例如,它是内置的,或者内核不支持模块卸载),你可以使模块可卸载而不会施加惩罚。

并非所有模块都适合卸载,但如果可以卸载您的驱动程序,则添加对此的支持是有意义的,并且会让其他人(使用您的驱动程序的人)更快乐。

至于宏本身:__exit 扩展为一个特殊指令,告诉编译器如果模块无法卸载则丢弃该函数。如果不调用退出函数,这将节省代码 space。