编写linux驱动时,为什么要使用copy_from_user函数
来源:互联网 发布:双色球走势图软件 编辑:程序博客网 时间:2024/06/05 15:27
在进行驱动编写的时候,如果要把用户空间的数据传递给内核,就需要使用copy_from_user函数。
为什么要这样操作,直接使用或者用memcpy操作不行吗?
这样我们首先要明白,用户空间的进程崩溃了,不会影响系统的其它进程。但是系统内核崩溃了,就什么都结束了。
所以,为什么要使用copy_from_user函数的原因就在这里。
我们假设用户空间因为软件bug传递了一个非法的内存地址。内核使用copy_from_user进行数据拷贝。
那么它会首先检测这个用户空间地址是否是在这个进程的合理地址范围内。每个进程的用户空间的地址范围在内核相关的数据中是有记录的。如果范围不合理,就可以首先pass掉。
如果用户空间地址的范围合理,就进行数据拷贝。问题来了,因为这个地址是非法的内存地址,所以导致缺页异常,但是copy_from_user函数会设置一个修复处理的机制,导致能正常返回。如果直接用memcpy操作,进入缺页异常处理,因为无法进行修复,导致内核崩溃
0 0
- 编写linux驱动时,为什么要使用copy_from_user函数
- 为什么要使用copy_from_user?
- 为什么驱动里要使用copy_to_user和copy_from_user
- Linux copy_to_user、copy_from_user使用
- [转]Copy_from_user函数详解 linux kernel
- LINUX之 Copy_from_user函数详细分析
- linux copy_to_user和copy_from_user函数的使用说明
- linux copy_from_user
- linux驱动开发--copy_to_user 、copy_from_user函数实现内核空间数据与用户空间数据的相互访问
- copy_from_user为什么会休眠
- Linux driver dts使用,实例驱动编写
- Linux编写自己的程序,运行时为什么要加入 ./
- Copy_from_user函数详细分析
- copy_to_user和copy_from_user函数
- Copy_from_user函数详细分析
- Copy_from_user函数详细分析
- Copy_from_user函数详细分析
- copy_from_user函数详解
- hdu 1394
- 网上的一篇spring security详解教程,觉得不错,转过来了
- 全面理解java中NIO机制
- 树莓派体验3
- jQuery定位html元素,通过(id,标签名,样式名)
- 编写linux驱动时,为什么要使用copy_from_user函数
- Redis入门—安装Redis
- 校招准备系列:每天一道算法题(4)
- android 扫描二维码
- <模型汇总_5>生成对抗网络GAN及其变体SGAN_WGAN_CGAN_DCGAN_InfoGAN_StackGAN
- mysql数据库备份与还原
- spring mvc应用基于Java config配置是怎么启动的
- IntentFilter与Intent
- 多系统对接的痛点