首页 > 解决方案 > 如何将数据保存到设备文件?

问题描述

我目前正在构建一个内核模块,该模块在 /dev 下创建一个设备,并且我想在设备文件中存储一些数据。但是,每次我尝试写入设备文件时,都没有将任何内容保存到该特定文件中。

目前,我尝试使用 device_write/device_read 没有运气,因为我正在写入的数据在再次运行用户程序后没有保存在内核空间中。我也尝试过使用来自用户程序的 ioctl 调用并使用 copy_from_user 和 copy_to_user 但这也不会保存任何数据。

标签: linuxlinux-device-driverdevice-driverioctl

解决方案


仅仅通过在 /dev 中创建一个设备节点并不意味着你有一个可以读/写的设备。它只是从用户空间与硬件对话的句柄。如果您正在为某些块设备 SD/USB 创建驱动程序,则需要参考设备特定框架。

如果您只是创建一个虚拟设备并想要实现读/写,您可以在探针和 device_write 中分配一些内核内存,复制到该内存并在 device_read 中读取内存的内容。


推荐阅读