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

时间:2018-08-27 05:53:55

标签: gem5

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

  

“声明(pagemap> = 0)失败”

代码行是:

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

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

  

未找到sudo命令

如何在gem5中使用sudo?

1 个答案:

答案 0 :(得分:0)

这些问题不是特定于gem5的,而是特定于映像/ Linux的,并且可能会在任何模拟器或真实硬件上发生。因此,我建议您从等式中完全删除gem5,并在下次询问Linux或特定于映像的问题,准确说明您使用的映像,内核配置,并提供一个最小的C示例来重现该问题:这将大大改善您获得帮助的可能性。

我刚在aarch64上成功完成了open("/proc/self/pagemap", O_RDONLY)this programon 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用户身份登录即可,并且默认情况下,如果没有它,则可以执行任何操作。可以通过常规的#而不是$看到提示。