我正在尝试在gem5 FS模式下运行使用页面地图的应用程序。 但是我无法在gem5中使用页面地图。它抛出以下错误-
“声明(pagemap> = 0)失败”
代码行是:
int pagemap = open("/proc/self/pagemap", O_RDONLY);
assert(pagemap >= 0);
此外,如果我尝试使用sudo在gem5终端上运行我的应用程序,则会引发错误-
未找到sudo命令
如何在gem5中使用sudo?
答案 0 :(得分:0)
这些问题不是特定于gem5的,而是特定于映像/ Linux的,并且可能会在任何模拟器或真实硬件上发生。因此,我建议您从等式中完全删除gem5,并在下次询问Linux或特定于映像的问题,准确说明您使用的映像,内核配置,并提供一个最小的C示例来重现该问题:这将大大改善您获得帮助的可能性。
我刚在aarch64上成功完成了open("/proc/self/pagemap", O_RDONLY)
和this program和on this fs.py
setup的使用,另请参阅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'
在v4.18上找到可能是创建点的pagemap
字符串,这使我进入fs/proc/base.c
,其中包含:
#ifdef CONFIG_PROC_PAGE_MONITOR
REG("pagemap", S_IRUSR, proc_pagemap_operations),
#endif
因此请确保已设置CONFIG_PROC_PAGE_MONITOR
。
sudo
:大多数嵌入式/模拟器映像都没有,您只需直接以root用户身份登录即可,并且默认情况下,如果没有它,则可以执行任何操作。可以通过常规的#
而不是$
看到提示。