当前位置: 技术问答>linux和unix
请教:内核代码中出现的__init等宏
来源: 互联网 发布时间:2017-04-24
本文导语: 我在看驱动程序时,发现有的函数的前面有__init, 我上网去查了下,说是宏,是编译时会将被修饰的内容放到这些宏所代表的section中, 可是我记得在linux的汇编中的section,主要是text,data和bss,好像没有这些init的section...
我在看驱动程序时,发现有的函数的前面有__init,
我上网去查了下,说是宏,是编译时会将被修饰的内容放到这些宏所代表的section中,
可是我记得在linux的汇编中的section,主要是text,data和bss,好像没有这些init的section,
我在网上看到什么有7个级别的init,我看了不太明白,哪位能说说吗?或者能否提供资料?
另:__init这个宏好像不能在用户级别的应用程序中使用,是吗?(我在helloworld中
使用,编译就不能通过,我已经加了头文件)
我上网去查了下,说是宏,是编译时会将被修饰的内容放到这些宏所代表的section中,
可是我记得在linux的汇编中的section,主要是text,data和bss,好像没有这些init的section,
我在网上看到什么有7个级别的init,我看了不太明白,哪位能说说吗?或者能否提供资料?
另:__init这个宏好像不能在用户级别的应用程序中使用,是吗?(我在helloworld中
使用,编译就不能通过,我已经加了头文件)
|
readelf -a 查看elf文件的信息,可以根据readelf的输出研究下各个相关的信息
应用程序最好别去用内核定义的头文件
应用程序最好别去用内核定义的头文件
|
汇编那些.text .data .bss段一般通用的,当然也可以自己定义段。
init是有级别,用来定义先后顺序,__init是在内核的编译环境定义使用,当然不能在应用程序,
应用程序也不需要啊。
init是有级别,用来定义先后顺序,__init是在内核的编译环境定义使用,当然不能在应用程序,
应用程序也不需要啊。