驱动与用户空间的交互函数

ops/2024/12/26 15:24:24/

ssize_t read(int fd, void *buf, size_t count, loff_t *offt)

fd要打开的设备文件(文件描述符);

buf返回给用户空间的数据缓冲区;

count要读取的数据长度;

offt相对于文件首地址的偏移,它用于跟踪文件操作中当前的位置,由于是由内核进行维护的,因此用户空间的read函数没有这个形参;

返回值:读取成功的话返回读取到的字节数;如果返回0表示读取到了文件末尾;如果返回负值,表示读取失败。


ssize_t write(int fd, const void *buf, size_t count, loff_t *offt)

fd设备文件,表示打开的文件描述符;

buf要写给设备写入的数据;

count要写入的数据长度,也就是字节数;

offt相对于文件首地址的偏移,它用于跟踪文件操作中当前的位置,由于是由内核进行维护的,因此用户空间的write函数没有这个形参;

返回值:写入成功的话返回写入的字节数;如果返回0表示没有写入任何数据;如果返回负值,表示写入失败。


static long unlocked_ioctl (struct file *filp, unsigned int cmd, unsigned long arg)

filp要打开的设备文件(文件描述符);

cmd应用发送过来的命令

arg参数(实际上是参数的地址,需要在程序中进行强制类型转换);

返回值:0成功,其他失败;


对比

功能方面:read函数只能完成读的功能,write只能完成写的功能。读取大数据的时候效率高。ioctl既可以读也可以写。ioctl的接口是万能的,ioctl(fd, cmd, arg)第三个参数可以是一个整形变量,也可以是一个指向某种数据结构的指针。

性能方面:对于需要高性能的数据传输,read和write可能更合适,因为它们通常可以直接映射到设备的DMA操作。ioctl可能涉及到更多的上下文切换和处理,可能不适合高频率的数据传输。ioctl的语义一般是非阻塞的,read和write却省是阻塞的。


http://www.ppmy.cn/ops/145147.html

相关文章

鸿蒙UI开发——自定义主题色

1、概述 ArkTs提供了应用内主题切换功能,支持全局主题切换,也支持局部主题切换,效果如下。本文针对主题切换做简单介绍。 2、主题色 ArkTs提供了一套内置主题配色,有Colors对象持有,它包含了默认情况下,关…

数据结构之栈,队列,树

目录 一.栈 1.栈的概念及结构 2.栈的实现 3.实现讲解 1.初始化栈 2.销毁栈 3.压栈 4.出栈 5.返回栈顶元素 6.返回栈内元素个数 7.判断栈内是否为空 二.队列 1.队列的概念及结构 2.队列的实现 3.实现讲解 1.初始化队列 2.销毁队列 3.单个成员入队列 4.单个成员…

08 Django - Django媒体文件静态文件文件上传

九、Django媒体文件&静态文件&文件上传 1.静态文件和媒体文件 媒体文件: 用户上传的文件, 叫做media静态文件: 存放在服务器的 css, js, image等,叫做static 在Django中使用静态文件 {% static img/example.jpg %} > static模板关键字就是在settings.py中指定的…

前端Pako.js 压缩解压库 与 Java 的 zlib 压缩与解压 的互通实现

工具介绍: pako.js 前端压缩解压的库(包含 zlib 和gzip 两种实现,这里只介绍 zlib) pako 2.0.4 API documentation Java8 原生支持 zlib 和 gzip 业务场景 因为数据太大,网络环境不可控。故前端需要将数据 A 先压缩…

PCL点云库入门——PCL库点云滤波算法之直通滤波(PassThrough)和条件滤波(ConditionalRemoval)

0、滤波算法概述 PCL点云库中的滤波算法是处理点云数据不可或缺的一部分,它们能够有效地去除噪声、提取特征或进行数据降维。例如,使用体素网格滤波(VoxelGrid)可以减少点云数据量,同时保留重要的形状特征。此外&#…

Leetcode经典题20--长度最小的子数组

题目描述 给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其总和大于等于 target 的长度最小的子数组 [numsl, numsl1, ..., numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。 输入输出示例 输入&…

【Django】测试带有 CSRF 验证的 POST 表单 API 报错:Forbidden (CSRF cookie not set.)

【Django】测试带有 CSRF 验证的 POST 表单 API 报错:Forbidden (CSRF cookie not set.) 问题描述 Django 使用 Apifox 测试 POST 表单报错。 Forbidden (CSRF cookie not set.): /api/parse [20/Dec/2024 15:17:25] "POST //api/parse HTTP/1.1" 403 …

YoloDotNet OBB(定向边界框)

文章目录 前言1、代码示例引入命名空间:初始化 Yolo 对象:加载图像和执行 OBB 检测:处理检测结果:2、自定义 OBB 绘制(可选)3、性能和准确性考虑前言 OBB(Oriented Bounding Box)在目标检测中用于更精确地框定非水平或垂直放置的物体。与常规边界框不同,OBB 可以根据物…