如何在gem5中使用m5 readfile和m5 execfile?

时间:2018-03-27 15:03:23

标签: gem5

我希望m5 readfile将从主机读取文件,m5 execfile将从主机执行文件,但文档很少,我无法让它们工作。

可能路径由readfile=中的m5out/config.ini确定,但在使用fs.py时我不知道如何修改该设置;当我重新启动gem5时,它会覆盖该文件。

我能够使用相关的m5 writefile但是:

旅客:

echo mycontent > myfileguest
m5 writefile myfileguest myfilehost

主机:

cat m5out/myfilehost

1 个答案:

答案 0 :(得分:1)

<强> readfile

从gem5 68af229490fc811aebddf68b3e2e09e63a5fa475开始,您可以设置readfile路径:

fs.py --script=myfile

writefile不同,路径相对于主机上的当前目录,而不是m5out

然后,当您在guest虚拟机中运行m5 readfile时,它会将文件的内容输出到stdout。

fs.py脚本中执行此操作:

if options.script is not None:
    test_sys.readfile = options.script

似乎继承自class System,最终将配置序列化为config.ini仅用于调试目的。

<强>的execfile

execfile只是readfile上的一个非常轻量级的包装器,它不是将输入文件写入stdout,而是将其写入/tmp/execfile,然后运行exec系统调用来自C。

但是,从68af229490fc811aebddf68b3e2e09e63a5fa475开始,m5没有:

  • 使用O_CREAT
  • 打开文件
  • 设置适当的可执行权限

所以你必须对客人做:

touch /tmp/execfile
chmod +x /tmp/execfile
m5 execfile

我更愿意使用m5 readfile和一些脚本执行此操作。

m5 execfile可能会作为init程序使用,但我觉得传递给init程序的参数太笨拙且不可实现。