diff options
author | Gabe Black <gabeblack@google.com> | 2017-09-15 17:24:12 -0700 |
---|---|---|
committer | Gabe Black <gabeblack@google.com> | 2017-09-26 21:20:02 +0000 |
commit | 3734637c0c41eedc5b5dc4f1ced50610a7a17db4 (patch) | |
tree | 64ef350e81232177f4a106f838d044bdde8b9342 | |
parent | cd5d28594d9708cca2fbbf17e9246cbd890ae336 (diff) | |
download | gem5-3734637c0c41eedc5b5dc4f1ced50610a7a17db4.tar.xz |
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>
-rw-r--r-- | util/m5/m5.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/util/m5/m5.c b/util/m5/m5.c index 82ef73b0f..38da9dc37 100644 --- a/util/m5/m5.c +++ b/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>" }, |