linux 驱动的module_init 浅析

背景:做linux 驱动,但是从来没有想过module_init 函数的实现原理。都是按照框架然后就开始写了。现在想做一个记录。

解析:

           驱动加载到内核中有两种方式。第一:编译进内核里,随内核启动。第二:动态加载到内核中(insmod)。

这两种方式对module_init 的使用是不一样的。先简单的总结一下:

第一种:在内核的  init.text __start    和    __end 段中被统一初始化。

第二种:由busybox 中的insmod_main 函数到调用syscall()  函数。将用户态的.ko 文件注册到内核态中运行。自然module_init 函数就由insmod 命令调用执行。这个最重要的是理解syscall () 函数,init 和  exit 都是调用的syscall() 函数。

 

------------------------------------------------------------  华丽的分割线  --------------------------------------------------------

上面总结了。下面附上我看到的链接吧,我感觉最重要的是上面的一段。

第一种:https://blog.csdn.net/ffmxnjm/article/details/71713670

第二种:https://blog.csdn.net/menghuanbeike/article/details/77979497      https://blog.csdn.net/feixin620/article/details/78416560

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值