diff options
author | Nathan Binkert <nate@binkert.org> | 2008-08-03 18:19:55 -0700 |
---|---|---|
committer | Nathan Binkert <nate@binkert.org> | 2008-08-03 18:19:55 -0700 |
commit | 50ef39af82413ef463609f24173b22af13fad268 (patch) | |
tree | 44fb10aeaf17c5055c2ae315f5bc52e25180a3d3 /src/base/socket.cc | |
parent | ede89c2d541051c2ed647e2967712e10b3c0fab0 (diff) | |
download | gem5-50ef39af82413ef463609f24173b22af13fad268.tar.xz |
sockets: Add a function to disable all listening sockets.
When invoking several copies of m5 on the same machine at the same
time, there can be a race for TCP ports for the terminal connections
or remote gdb. Expose a function to disable those ports, and have the
regression scripts disable them. There are some SimObjects that have
no other function than to be used with ports (NativeTrace and
EtherTap), so they will panic if the ports are disabled.
Diffstat (limited to 'src/base/socket.cc')
-rw-r--r-- | src/base/socket.cc | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/src/base/socket.cc b/src/base/socket.cc index adcc48735..bcc5236b0 100644 --- a/src/base/socket.cc +++ b/src/base/socket.cc @@ -43,6 +43,23 @@ using namespace std; +bool ListenSocket::listeningDisabled = false; +bool ListenSocket::anyListening = false; + +void +ListenSocket::disableAll() +{ + if (anyListening) + panic("Too late to disable all listeners, already have a listener"); + listeningDisabled = true; +} + +bool +ListenSocket::allDisabled() +{ + return listeningDisabled; +} + //////////////////////////////////////////////////////////////////////// // // @@ -92,6 +109,7 @@ ListenSocket::listen(int port, bool reuse) listening = true; + anyListening = true; return true; } |