misc: Make the m5 utilities writefile command accept a host path.
When the writefile command is given one command line argument, it's treated as the name of the file in the simulation and on the host. When there are two arguments, the first is the filename in the simulation, and the second is the name on the host. Change-Id: I402925a9ff89665bee9910fb18b7f8b06b8f7d35 Reviewed-on: https://gem5-review.googlesource.com/4850 Reviewed-by: Jason Lowe-Power <jason@lowepower.com> Maintainer: Gabe Black <gabeblack@google.com>
This commit is contained in:
11
util/m5/m5.c
11
util/m5/m5.c
@@ -140,7 +140,7 @@ read_file(int dest_fid)
|
||||
}
|
||||
|
||||
void
|
||||
write_file(const char *filename)
|
||||
write_file(const char *filename, const char *host_filename)
|
||||
{
|
||||
fprintf(stderr, "opening %s\n", filename);
|
||||
int src_fid = open(filename, O_RDONLY);
|
||||
@@ -158,7 +158,7 @@ write_file(const char *filename)
|
||||
memset(buf, 0, sizeof(buf));
|
||||
|
||||
while ((len = read(src_fid, buf, sizeof(buf))) > 0) {
|
||||
bytes += m5_write_file(buf, len, offset, filename);
|
||||
bytes += m5_write_file(buf, len, offset, host_filename);
|
||||
offset += len;
|
||||
}
|
||||
fprintf(stderr, "written %d bytes\n", bytes);
|
||||
@@ -224,12 +224,13 @@ do_read_file(int argc, char *argv[])
|
||||
void
|
||||
do_write_file(int argc, char *argv[])
|
||||
{
|
||||
if (argc != 1)
|
||||
if (argc != 1 && argc != 2)
|
||||
usage();
|
||||
|
||||
const char *filename = argv[0];
|
||||
const char *host_filename = (argc == 2) ? argv[1] : argv[0];
|
||||
|
||||
write_file(filename);
|
||||
write_file(filename, host_filename);
|
||||
}
|
||||
|
||||
void
|
||||
@@ -344,7 +345,7 @@ struct MainFunc mainfuncs[] = {
|
||||
{ "dumpstats", do_dump_stats, "[delay [period]]" },
|
||||
{ "dumpresetstats", do_dump_reset_stats, "[delay [period]]" },
|
||||
{ "readfile", do_read_file, "" },
|
||||
{ "writefile", do_write_file, "<filename>" },
|
||||
{ "writefile", do_write_file, "<filename> [host filename]" },
|
||||
{ "execfile", do_exec_file, "" },
|
||||
{ "checkpoint", do_checkpoint, "[delay [period]]" },
|
||||
{ "addsymbol", do_addsymbol, "<address> <symbol>" },
|
||||
|
||||
Reference in New Issue
Block a user