在 gem5 FS 模式下访问 pagemap

Access pagemap in gem5 FS mode

我正在尝试 运行 一个在 gem5 FS 模式下使用页面映射的应用程序。 但我无法在 gem5 中使用页面映射。它抛出以下错误 -

"assert(pagemap>=0) failed"

代码行是:

int pagemap = open("/proc/self/pagemap", O_RDONLY);
  assert(pagemap >= 0);

此外,如果我尝试在 gem5 终端上使用 sudo 运行 我的应用程序,它会抛出错误-

sudo command not found

如何在 gem5 中使用 sudo ??

这些问题不是 gem5 特有的,而是图像 / Linux 特有的,并且可能发生在任何模拟器或真实硬件上。所以我建议你从等式中完全删除 gem5,下次问一个 Linux 或图像特定的问题,确切地说出你正在使用的图像,内核配置,并提供一个最小的 C 示例来重现问题:这个将大大提高您获得帮助的可能性。

我刚刚 open("/proc/self/pagemap", O_RDONLY) 成功完成了:this program and on this fs.py setup on aarch64, see also 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 身份登录,默认情况下可以在没有它的情况下执行任何操作。这可以通过提示中的常规 # 而不是 $.

来看出