在 gem5 FS 模式下访问页面地图



我正在尝试运行一个在 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身份登录,默认情况下可以在没有它的情况下执行任何操作。这可以通过提示中的常规#而不是$看到。

最新更新