__init、__initdata、__exit、__exitdata

来源:互联网 发布:mac苹果系统如何更新 编辑:程序博客网 时间:2024/06/05 20:36

__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);

}

通过它的使用推测一下它的作用,定义一个静态变量当模块的退出函数使用之后自动释放该变量,达到节省资源的目的。

原创粉丝点击