我正在尝试运行一个在 gem5 FS 模式下使用页面映射的应用程序。 但我无法在 gem5 中使用页面映射。它抛出以下错误-
"assert(pagemap>=0) failed"
代码行是:
int pagemap = open("/proc/self/pagemap", O_RDONLY);
assert(pagemap >= 0);
此外,如果我尝试使用 sudo 在 gem5 终端上运行我的应用程序,它会抛出错误-
sudo command not found
如何在 gem5 中使用 sudo ??
最佳答案
这些问题不是 gem5 特有的,而是图像/Linux 特有的,并且可能发生在任何模拟器或真实硬件上。所以我建议你从等式中完全删除 gem5,下次问一个 Linux 或图像特定的问题,准确说明你使用的是什么图像,内核配置,并提供一个最小的 C 示例来重现问题:这将大大提高您获得帮助的可能性。
我刚刚完成了open("/proc/self/pagemap", O_RDONLY)
成功地:this program和 on this fs.py
setup在 aarch64 上,另请参阅 these comments .
如果/proc/<pid>/pagemap
任何文件都不存在,请执行以下操作:
确保 procfs 安装在
/proc
上.这通常是通过fstab
完成的。输入类型:proc /proc proc defaults 0 0
但是你的初始化脚本需要使用
fstab
或者,您可以挂载
proc
手动使用:mount -t proc proc proc/
您可能希望确保
/sys
和/dev
也已安装。grep 内核以查看是否有一些配置控制文件创建。
这些东西通常很容易在对内核一无所知的情况下找到。
如果我这样做:
git grep '"pagemap'
找到
pagemap
字符串,这可能是 v4.18 上的创建点,这使我找到fs/proc/base.c
,其中包含:#ifdef CONFIG_PROC_PAGE_MONITOR REG("pagemap", S_IRUSR, proc_pagemap_operations), #endif
所以确保
CONFIG_PROC_PAGE_MONITOR
已设置。
sudo
: 大多数嵌入式/模拟器图像都没有它,您只需直接以 root 身份登录,默认情况下可以在没有它的情况下执行任何操作。这可以通过常规#
看出在提示中而不是 $
.
关于gem5 - 在 gem5 FS 模式下访问 pagemap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52033257/