gpt4 book ai didi

c - 无法写入/dev/mem

转载 作者:行者123 更新时间:2023-12-02 04:33:10 35 4
gpt4 key购买 nike

我正在试验的问题与正确执行的 open()mmap() 函数无关。我在内核中禁用了 CONFIG_STRICT_DEVMEM,所以我可以毫无问题地从 /dev/mem 中读取。实际上,我可以执行以下操作:

const char *path = "/dev/mem"
int fd = open(path, O_RDWR); /* read and write flags*/
p = mmap(0, SIZE, PROT_READ | PROT_WRITE, MAP_SHARED, fd, BASE_ADDR); /* read and write flags*/

并且代码不会失败。尽管如此,我还是使用这段代码写入 PCI 地址空间。所以,基本上 BASE_ADDR0xc000000,大小是 256 MiB(0x10000000,所有 PCI 地址空间)。

也就是说,当我尝试在这些位置上写入时(具有特定的偏移量,BDF 格式),什么也没有写入;代码再次没有失败,它只是不写任何东西。

如果我的代码有误,我尝试了 BusyBox ,具有以下参数:

[horro@ ~]$ sudo busybox devmem 0xc00b0a8c w 0xffffffff
[horro@ ~]$ sudo busybox devmem 0xc00b0a8c
0x00000000

所以,基本上就是什么都不写了。

最佳答案

有一个 CONFIG_STRICT_DEVMEM 内核配置选项。我的理解是它必须在编译时设置为 CONFIG_STRICT_DEVMEM=n。这是出于安全考虑。

关于c - 无法写入/dev/mem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46568258/

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