首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【专业技术】Linux设备驱动第六篇:高级字符驱动操作之iotcl

Linux中把ioctl cmd划分成几个位段来帮助创建唯一的cmd。这几个位段一般是:type(模数),序号,传输方向和参数大小。...可使用下面的接口来做数据的传输: put_user(datum, ptr) __put_user(datum, ptr) 这些宏定义写 datum 到用户空间;它们相对快,且应当被调用来代替 copy_to_user...put_user 检查来确保这个进程能够写入给定的内存地址,它在成功时返回 0,并且在错误时返回 -EFAULT。...因此, __put_user 应当只用在内存区已经用 access_ok 检查过的时候。...它们象 put_user 和 __put_user,但是在相反方向传递数据。获取的值存储于本地变量 local; 返回值指出这个操作是否成功。

1.4K80
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    读书笔记|Linux内核设计与实现

    这本书属于学习Linux内核原理必读推荐书目之一!...对Linux内核的设计原理进行了细致的说明,也有具体实现部分的介绍,结合源码能很好的理解Linux内核; 在简单翻了一遍之后,带着如下几个疑问,整理了下相关知识点: 1、内核是什么时候加载运行的; 2、...Linux设备驱动作为一个linux内核模块存在,模块都有2个接口函数,模块初始化函数和模块退出函数。 上面提到的驱动程序的注册。一般是由模块初始化函数来实现的。...问题的解决办法是:系统提供一系列函数帮助完成数据空间转换:例如,get_user 、put_user 、copy_from_user 、copy_to_user 等函数。...MMU/Cache line CPU L1/L2高速缓存 页高速缓存:Linux内核实现的磁盘缓存,主要用来减少对磁盘的I/O操作。

    1K20
    领券