您的位置:首页 > 其它

__init、__initdata、__exit、__exitdata

2013-09-29 23:36 288 查看
__init 宏常用在驱动模块初始化函数的定义处,其目的是将驱动模块的初始化函数放入名叫.init.text的输入段。当内核启动完毕后,这个段中的内存会被释放掉供其他使用。

__initdata宏用于数据定义,目的是将数据放入名叫.init.data的输入段。其它几个宏也类似。

__exit只在模块卸载时使用。如果模块被直接编进内核则该函数就不会被调用。如果内核编译时没有包含该模块,则此函数将被简单地丢弃。

__exitdata:

static char hdlc_unregister_ok[]
__exitdata =

         KERN_INFO "N_HDLC: line discipline unregistered\n";

static char hdlc_unregister_fail[]
__exitdata =

         KERN_ERR "N_HDLC: can't unregister line discipline (err = %d)\n";

 

static void __exit n_hdlc_exit(void)

{

         /* Release tty registration of line discipline */

         int status = tty_unregister_ldisc(N_HDLC);

 

         if (status)

                   printk(hdlc_unregister_fail, status);

         else

                   printk(hdlc_unregister_ok);

}

通过它的使用推测一下它的作用,定义一个静态变量当模块的退出函数使用之后自动释放该变量,达到节省资源的目的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息