社区
Linux_Kernel
帖子详情
内核中_init问题!
lily2005lucky
2008-12-10 10:24:12
在目录drivers/char/random.c中,有:
static int _init bath_entropy_init(int size,struct entropy_store *r)
其中:_init 标记是什么意思呢?
他是在哪里定义的?
...全文
62
5
打赏
收藏
内核中_init问题!
在目录drivers/char/random.c中,有: static int _init bath_entropy_init(int size,struct entropy_store *r) 其中:_init 标记是什么意思呢? 他是在哪里定义的?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
outblue
2008-12-11
打赏
举报
回复
这个是驱动模块加载时调用的程序,同样的,卸载模块是调用的程序前面有__exit标志。看多了就习惯了,哈
xianfengdesign
2008-12-11
打赏
举报
回复
[Quote=引用 2 楼 lily2005lucky 的回复:]
谢谢,
很奇怪,c中有这样的用法吗?
我在看书时就发现有很多以前没见过的用法,
郁闷!
不过,我会坚持下去的!
[/Quote]
GCC的扩展
猫已经找不回了
2008-12-11
打赏
举报
回复
帮up
lily2005lucky
2008-12-10
打赏
举报
回复
谢谢,
很奇怪,c中有这样的用法吗?
我在看书时就发现有很多以前没见过的用法,
郁闷!
不过,我会坚持下去的!
bshawk
2008-12-10
打赏
举报
回复
可以看看内核头文件: include/linux/init.h
__init 是一个宏定义,类似定义如下:
#define __init __section(.init.text)
表示将 __init修饰的函数在编译的时侯放到 .init.text节(关于节(section)的定义,可以看看ELF的格式)。
good luck!
Linux0.11
内核
main函数那些事
本课程介绍Linux0.11版本
内核
如何人工设置第一个任务(task 0)以及任务0从
内核
态切换到用户态的详细...课程最后会介绍,任务0 fork()任务1
init
进程的过程,以及在进程1
中
使用fork()创建登录shell及交互shell的过程。
【linux kernel】对linux
内核
__
init
机制的实践
一、开篇 在linux
内核
源码
中
,随处都可以看见类似于__
init
这样的宏,如下代码片段: # define __section(S) __attribute__ ((__section__(#S))) #define __
init
__section(.
init
.text) 从上述代码片段可见,当使用__
init
宏修饰一个函数后,那么在进行编译构建过程
中
,会出现一些不一样的现象。 在比如说__setup宏,该宏定义如下代码片段所示【出自linux dir/include/
init
.h】: #def
【GCC系列】深入理解Linux
内核
-- __
init
宏定义
本文使用的Linux源码
内核
版本:Linux 5.10.0 __
init
宏定义 在Linux的
内核
源码里,尤其是一些关键的
内核
函数,会包含__
init
宏,它是用来做什么的呢? asmlinkage __visible void __
init
__no_sanitize_address start_kernel(void) 那么,它的作用是什么?先去找下宏定义: 【include/linux/
init
.h】 #define __
init
__section(".
init
.text") __cold __l
内核
调用__
init
函数的顺序
参见include/linux/
init
.h和vmlinux.lds
1)
所有标识为__
init
的函数在链接的时候都放在.
init
.text这个区段内,
在这个区段
中
,函数的摆放顺序是和链接的顺序有关的,是不确定的。
2)
所有的__
init
函数在区段.
init
call.
init
中
还保存了一份函数指针,
在初始化时
内核
会通过这些函数指针调用这些__
init
函数指针,
并在整个初始化完成后,释放整个
init
区段(
Linux
内核
宏__
init
/__
init
data/__exit
在
内核
模块编程
中
,或许会发现有这样的一些特殊关键字__
init
,_
init
data ,__exit等等,其实这些都是gcc的扩展属性:__
init
宏最常用的地方是驱动模块初始化函数的定义处,其目的是将驱动模块的初始化函数放入名叫.
init
.text的段。当
内核
启动完毕后,这个段
中
的内存会被释放掉供其他使用。__
init
data宏用于数据定义,目的是将数据放入名叫.
init
.data的段。其它几...
Linux_Kernel
4,436
社区成员
17,460
社区内容
发帖
与我相关
我的任务
Linux_Kernel
Linux/Unix社区 内核源代码研究区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章