gpt4 book ai didi

字符设备驱动程序在读操作中的偏移量

转载 作者:行者123 更新时间:2023-11-30 14:32:50 24 4
gpt4 key购买 nike


static ssize_t read(struct file *file, char *buff, size_t len, loff_t *offset)
{
printk(KERN_INFO "write\n");
return simple_read_from_buffer(buff, len, offset, ker_buff, SIZE);
}

static ssize_t write(struct file *file, const char *buff, size_t len, loff_t *offset)
{
printk(KERN_INFO "read\n");
printk(KERN_INFO "your offset is:%lu\n",(long)offset);

return simple_write_to_buffer(ker_buff, SIZE, offset, buff, len);
}

当我执行 echo "hi">/dev/device_name 时,我得到输出:

read
your offset is 0 as output.`

为什么我得到 0?

在手册页中,它被称为用户的偏移位置。

谁能解释一下 offset 有什么用吗?

最佳答案

“偏移位置”是文件中用户空间代码正在读取或写入的位置。当您执行 echo "hi">/dev/device_name 时,您正在写入文件的开头,即位置 0。您可以使用以下命令测试从命令行写入不同的位置:例如,echo "hi"| dd of=/dev/device_nameeek=2000

注意:您需要自己更新。如果用户空间代码写入 4000 字节,则应将 *offset 增加 4000。否则,如果他们在此之后再写入 4000 字节,*offset 仍将为 0,并且它们将覆盖前 4000 个字节而不是接下来的 4000 个字节。

关于字符设备驱动程序在读操作中的偏移量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59661663/

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