gem5 - gem5 FS模式下访问pagemap
问题描述
我正在尝试在 gem5 FS 模式下运行使用页面映射的应用程序。但我无法在 gem5 中使用页面映射。它抛出以下错误 -
“断言(页面地图> = 0)失败”
代码行是:
int pagemap = open("/proc/self/pagemap", O_RDONLY);
assert(pagemap >= 0);
此外,如果我尝试使用 sudo 在 gem5 终端上运行我的应用程序,则会引发错误-
找不到 sudo 命令
如何在 gem5 中使用 sudo ?
解决方案
这些问题不是 gem5 特定的,而是图像/Linux 特定的,并且可能发生在任何模拟器或真实硬件上。所以我建议你完全从等式中删除 gem5,下次问一个 Linux 或图像特定的问题,准确说明你正在使用什么图像,内核配置,并提供一个重现问题的最小 C 示例:这将大大改善你得到帮助的概率。
我刚刚open("/proc/self/pagemap", O_RDONLY)
成功完成了:这个程序和aarch64上的这个fs.py
设置,另见这些评论。
如果/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 身份登录,默认情况下可以在没有它的情况下执行任何操作。这可以通过#
提示符中的常规而不是$
.
推荐阅读
- powerapps - 使用下拉列表中的选定项目在 Power Apps 中显示项目
- reactjs - 如果可以被 3 整除,如何根据条件为列表中的特定项目分配不同的背景颜色?
- excel - 将工作表从另一个打开的工作簿复制到当前工作簿
- asp.net-core - ASP.NET Core 中的 HttpContext.TraceIdentifier 有多独特?
- sendgrid - Sendgrid:如何向电子邮件模板添加动态链接?
- css - 我有一个围绕 svg 旋转但不固定的 SVG
- r - 更改 boxpoints 的颜色并在 plotly boxplot 中添加分布曲线
- mysql - 'While' 循环在设定的秒数后未退出
- r - 如何将保存的 Leaflet 小部件插入 Rmarkdown HTML 输出
- c++ - 使用替换密码进行加密