如何解决UIO - 内存映射数据似乎只是一种方式
设备内存中的值出现在用户空间中,但在用户级别所做的更改似乎无法恢复。 (错误/循环检查未显示)
Kernel module
define an array of test patterns
_probe
pci_request_regions(pdev,"test");
info.mem[0].addr = pci_resource_start(pdev,0);
info.mem[0].internal_addr = pci_ioremap_bar(pdev,0);
info.mem[0].size = pci_resource_len(pdev,0);
*((int *)(info.mem[0].internal_addr)) = pattern[i];
_release
printk ( KERN_ALERT "returned mem val %x\n",*((int *)(info.mem[0].internal_addr))
i++;
*((int *)(info.mem[0].internal_addr)) = pattern[i]; /* set next pattern */
user
iomap1 = mmap (NULL,size,PROT_READ | PROT_WRITE,MAP_SHARED,uiofd,0);
printf ( incoming mem val %x\n",*(int *)iomap1 );
*(int*)iomap1 = 0x12345678;
用户程序的每次运行都会打印预期的测试模式。 内核日志只显示内核设置的模式,而不是用户。
对于 EINVAL,尝试使用 msync 强制更新失败,(如此处其他线程所指出的那样)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。