build-in module 的init function會加上__init這個字樣,這是指當kernel做完這個module_init function後,即可釋放其resource,因為到下一次開機之前都不會再執行到了。其定義在include/linux/init.h:
#define __init __section(.init.text) __cold notrace
這是讓gcc知道當compile時,把這個fucntion放到text section。當initialize完成後即可釋放memory。開機完成後,看到的Freeing unused kernel memory: xxx k就是釋放的結果。
同樣的,在module_exit的前面也要加上__exit。
__init和__exit對loadable的module就沒有意義了。
對data則使用__initdata。
全站熱搜
留言列表