gpt4 book ai didi

c - 在 Linux 中与设备对话。写功能

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:27:27 26 4
gpt4 key购买 nike

我正在尝试编写一个简单的设备驱动程序,并使用我已经定义的 Dev_Read()Dev_Write() 函数。我的驱动程序注册了一个字符设备以这种方式给出主要编号

# mknod /dev/mydev c 250 0

然后,从我的用户程序中,我以这种方式打开设备

int fd;
if ((fd = open("/dev/mydev", O_RDWR)) < 0)
{
perror("open /dev/mydev");
exit(EXIT_FAILURE);
}

在我调用Read() 函数之后

int read_bytes = read (fd, buffer, 1);

并成功获取内核空间信息,表明我的 Dev_Read 函数有效。我的问题是我不明白如何实现我的 Dev_Write 函数。我怎样才能写一些东西到我的文件中,以查看 Dev_Write 函数是否有效?谢谢你的帮助。

最佳答案

了解您尝试过哪些方法无效会很有帮助。

需要注意的一件事(不一定是直观的)是您的驱动程序的写入函数必须将写入缓冲区从调用者的空间复制到内核空间。可以在教程中看到一个示例,网址为 http://www.freesoftwaremagazine.com/articles/drivers_linux。 -

ssize_t memory_write( struct file *filp, char *buf,
size_t count, loff_t *f_pos) {

char *tmp;

tmp=buf+count-1;
copy_from_user(memory_buffer,tmp,1);
return 1;
}

memory_buffer 是您在驱动程序中分配的空间。

关于c - 在 Linux 中与设备对话。写功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9328085/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com