__init __initdata __exit __exitdata解析

本文详细解析了Linux内核中用于标记函数和数据的特殊修饰符,包括__init、__initdata、__exit等,并解释了它们如何在不同模块中执行特定任务。
内核中,有很多函数和变量被一些特定的修饰符所修饰,这在以往的C语言编程是不常见的。说明如下:     

#define __init __attribute__ ((__section__ (".init.text")))
#define __initdata __attribute__ ((__section__ (".init.data")))

#define __exitdata __attribute__ ((__section__(".exit.data")))

#define __exit_call __attribute_used__ __attribute__ ((__section__ (".exitcall.exit")))

 

#ifdef MODULE

      #define __exit __attribute__ ((__section__(".exit.text")))

#else

      #define __exit __attribute_used__ __attribute__ ((__section__(".exit.text")))

#endif

      其中,__init和__exit标记函数,__initdata和__exitdata标记数据。__init宏使内建模块中的init函数在执行完成后释放掉,不过可装载的模块是不受影响的。__exit宏会使那些内建到内核的模块省略掉cleanup函数,不过和__init一样,对loadable模块没影响。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值