打印

linux驱动module_init浅析

[复制链接]
132|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
卡拉瓦乔|  楼主 | 2018-9-20 16:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
背景:做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

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

438

主题

438

帖子

0

粉丝