gem5 - 在 gem5 FS 模式下访问 pagemap

标签 gem5

我正在尝试运行一个在 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 programon 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/

相关文章:

c - C 应用程序如何使用 gem5 在多个内核上工作?

gem5 - 我如何知道 gem5 命令行选项(例如 --cpu-type)有哪些 optional ?

gem5 - 为什么在 gem5 中添加 DPRINTF(XXX 调试标志失败并显示 "error:' XXX' 未在此范围内声明”?

python - m5/objects/__init__.py 文件 gem5 中发生了什么

linux - gem5 系统调用仿真 arm C hello world 失败,出现 "fatal: syscall gettid (#224) unimplemented"

c - Intel/ARM 内在函数等价

cpu - cpu core 中 dispatch,commit,issue 和 squash width 的区别

ubuntu - 如何使用 GCC 7.2 在 Ubuntu 17.10 上构建 gem5,处理 C++ 编译中的问题?

c++ - 如何在 Ruby 系统中运行 ARM 多线程程序

macos - Mac OSX上的Gem5,生成问题(错误)