linux - 如何将数据保存到设备文件?
问题描述
我目前正在构建一个内核模块,该模块在 /dev 下创建一个设备,并且我想在设备文件中存储一些数据。但是,每次我尝试写入设备文件时,都没有将任何内容保存到该特定文件中。
目前,我尝试使用 device_write/device_read 没有运气,因为我正在写入的数据在再次运行用户程序后没有保存在内核空间中。我也尝试过使用来自用户程序的 ioctl 调用并使用 copy_from_user 和 copy_to_user 但这也不会保存任何数据。
解决方案
仅仅通过在 /dev 中创建一个设备节点并不意味着你有一个可以读/写的设备。它只是从用户空间与硬件对话的句柄。如果您正在为某些块设备 SD/USB 创建驱动程序,则需要参考设备特定框架。
如果您只是创建一个虚拟设备并想要实现读/写,您可以在探针和 device_write 中分配一些内核内存,复制到该内存并在 device_read 中读取内存的内容。
推荐阅读
- .net-core - .Net Core WinForms 应用程序的 Properties.Settings.Default 输出在哪里?
- javascript - Javascript事件队列任务序列号?
- java - 似乎无法将 Chronometer 转换为 int
- python - 如何获得最重要单词的 TF-IDF 分数?
- java - 在 Java 中将此格式“Tue,14 Jul 2020 03:15:03 +0000 (UTC)”的日期转换为这种格式“2020-02-11 16:05:00”
- python - 图例比轴宽的紧凑布局
- django - 将网站图标放在上传的每张图片上
- excel - VBA宏对具有多个日期的列进行排序,旧日期到新日期
- azure - 在我们的 devops 实例和客户 devops 实例之间分享故事、测试计划和更新
- python - pyTorch 相当于 SciPy.minmise