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。

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 kezeodsnx 的頭像
    kezeodsnx

    心的距離

    kezeodsnx 發表在 痞客邦 留言(1) 人氣()