diff options
author | Andreas Sandberg <andreas.sandberg@arm.com> | 2016-11-28 16:40:45 +0000 |
---|---|---|
committer | Andreas Sandberg <andreas.sandberg@arm.com> | 2017-03-21 10:30:02 +0000 |
commit | 7110d2313e44bf4b611534bbc921ec9808476a37 (patch) | |
tree | af438d63af1c2c2f0a99b71908beb761033b1e60 | |
parent | 065bb8c65569004704183ee0eb9eb1b55b9ed574 (diff) | |
download | gem5-7110d2313e44bf4b611534bbc921ec9808476a37.tar.xz |
python: Automatically disable listeners in batch setups
Determine if gem5 is running in a batch environment by checking if
STDIN is wired to a TTY or not. If the simulator is running in a batch
environment, disable all listeners by default. This behavior can be
overridden using the --enable-listeners option.
Change-Id: I404c709135339144216bf08a2769c016c543333c
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Sean McGoogan <sean.mcgoogan@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/2322
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
-rw-r--r-- | src/python/m5/main.py | 33 | ||||
-rw-r--r-- | src/python/m5/util/__init__.py | 17 |
2 files changed, 49 insertions, 1 deletions
diff --git a/src/python/m5/main.py b/src/python/m5/main.py index 42c4911dc..b987af4c8 100644 --- a/src/python/m5/main.py +++ b/src/python/m5/main.py @@ -1,3 +1,15 @@ +# Copyright (c) 2016 ARM Limited +# All rights reserved. +# +# The license below extends only to copyright in the software and shall +# not be construed as granting a license to any other intellectual +# property including but not limited to intellectual property relating +# to a hardware implementation of the functionality of the software +# licensed hereunder. You may use the software subject to the license +# terms below provided that you ensure that this notice is replicated +# unmodified and in its entirety in all distributions of the software, +# modified or unmodified, in source code or in binary form. +# # Copyright (c) 2005 The Regents of The University of Michigan # All rights reserved. # @@ -48,6 +60,8 @@ def parse_options(): option = options.add_option group = options.set_group + listener_modes = ( "on", "off", "auto" ) + # Help options option('-B', "--build-info", action="store_true", default=False, help="Show build information") @@ -67,6 +81,10 @@ def parse_options(): help="Filename for -r redirection [Default: %default]") option("--stderr-file", metavar="FILE", default="simerr", help="Filename for -e redirection [Default: %default]") + option("--listener-mode", metavar="{on,off,auto}", + choices=listener_modes, default="auto", + help="Port (e.g., gdb) listener mode (auto: Enable if running " \ + "interactively) [Default: %default]") option('-i', "--interactive", action="store_true", default=False, help="Invoke the interactive interpreter after running the script") option("--pdb", action="store_true", default=False, @@ -179,7 +197,7 @@ def main(*args): import stats import trace - from util import fatal + from util import inform, fatal, panic, isInteractive if len(args) == 0: options, arguments = parse_options() @@ -321,6 +339,19 @@ def main(*args): # set stats options stats.addStatVisitor(options.stats_file) + # Disable listeners unless running interactively or explicitly + # enabled + if options.listener_mode == "off": + m5.disableAllListeners() + elif options.listener_mode == "auto": + if not isInteractive(): + inform("Standard input is not a terminal, disabling listeners.") + m5.disableAllListeners() + elif options.listener_mode == "on": + pass + else: + panic("Unhandled listener mode: %s" % options.listener_mode) + # set debugging options debug.setRemoteGDBPort(options.remote_gdb_port) for when in options.debug_break: diff --git a/src/python/m5/util/__init__.py b/src/python/m5/util/__init__.py index a832f0e93..573674879 100644 --- a/src/python/m5/util/__init__.py +++ b/src/python/m5/util/__init__.py @@ -1,3 +1,15 @@ +# Copyright (c) 2016 ARM Limited +# All rights reserved. +# +# The license below extends only to copyright in the software and shall +# not be construed as granting a license to any other intellectual +# property including but not limited to intellectual property relating +# to a hardware implementation of the functionality of the software +# licensed hereunder. You may use the software subject to the license +# terms below provided that you ensure that this notice is replicated +# unmodified and in its entirety in all distributions of the software, +# modified or unmodified, in source code or in binary form. +# # Copyright (c) 2008-2009 The Hewlett-Packard Development Company # Copyright (c) 2004-2006 The Regents of The University of Michigan # All rights reserved. @@ -195,3 +207,8 @@ def makeDir(path): raise AttributeError, "%s exists but is not directory" % path else: os.mkdir(path) + +def isInteractive(): + """Check if the simulator is run interactively or in a batch environment""" + + return sys.__stdin__.isatty() |