[gem5-dev] [M] Change in gem5/gem5[develop]: base,cpu,dev: Simplify ListenSocket::listen().

2023-03-22 Thread Gabe Black (Gerrit) via gem5-dev
Gabe Black has submitted this change. (  
https://gem5-review.googlesource.com/c/public/gem5/+/69159?usp=email )


Change subject: base,cpu,dev: Simplify ListenSocket::listen().
..

base,cpu,dev: Simplify ListenSocket::listen().

Remove the "reuse" parameter which default to true and was always
also explicitly set to true. Tidy up the code itself slightly, mostly
by using "panic_if" to remove some nesting.

Change-Id: Ie23971aabf2fe4252d27f1887468360722a72379
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/69159
Maintainer: Gabe Black 
Reviewed-by: Yu-hsin Wang 
Tested-by: kokoro 
---
M src/base/remote_gdb.cc
M src/base/socket.cc
M src/base/socket.hh
M src/base/socket.test.cc
M src/base/vnc/vncserver.cc
M src/cpu/nativetrace.cc
M src/dev/net/ethertap.cc
M src/dev/serial/terminal.cc
8 files changed, 24 insertions(+), 38 deletions(-)

Approvals:
  Yu-hsin Wang: Looks good to me, approved
  kokoro: Regressions pass
  Gabe Black: Looks good to me, approved




diff --git a/src/base/remote_gdb.cc b/src/base/remote_gdb.cc
index b709ac3..1a2fef4 100644
--- a/src/base/remote_gdb.cc
+++ b/src/base/remote_gdb.cc
@@ -417,7 +417,7 @@
 return;
 }

-while (!listener.listen(_port, true)) {
+while (!listener.listen(_port)) {
 DPRINTF(GDBMisc, "Can't bind port %d\n", _port);
 _port++;
 }
diff --git a/src/base/socket.cc b/src/base/socket.cc
index 0a62a88..280f92b 100644
--- a/src/base/socket.cc
+++ b/src/base/socket.cc
@@ -185,24 +185,20 @@

 // Create a socket and configure it for listening
 bool
-ListenSocket::listen(int port, bool reuse)
+ListenSocket::listen(int port)
 {
-if (listening)
-panic("Socket already listening!");
+panic_if(listening, "Socket already listening!");

 // only create socket if not already created by a previous call
 if (fd == -1) {
 fd = socketCloexec(PF_INET, SOCK_STREAM, 0);
-if (fd < 0)
-panic("Can't create socket:%s !", strerror(errno));
+panic_if(fd < 0, "Can't create socket:%s !", strerror(errno));
 }

-if (reuse) {
-int i = 1;
-if (::setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, (char *)&i,
- sizeof(i)) < 0)
-panic("ListenSocket(listen): setsockopt() SO_REUSEADDR  
failed!");

-}
+int i = 1;
+int ret = ::setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &i, sizeof(i));
+panic_if(ret < 0,
+"ListenSocket(listen): setsockopt() SO_REUSEADDR failed!");

 struct sockaddr_in sockaddr;
 sockaddr.sin_family = PF_INET;
@@ -211,16 +207,16 @@
 sockaddr.sin_port = htons(port);
 // finally clear sin_zero
 std::memset(&sockaddr.sin_zero, 0, sizeof(sockaddr.sin_zero));
-int ret = ::bind(fd, (struct sockaddr *)&sockaddr, sizeof (sockaddr));
+ret = ::bind(fd, (struct sockaddr *)&sockaddr, sizeof (sockaddr));
 if (ret != 0) {
-if (ret == -1 && errno != EADDRINUSE)
-panic("ListenSocket(listen): bind() failed!");
+panic_if(ret == -1 && errno != EADDRINUSE,
+"ListenSocket(listen): bind() failed!");
 return false;
 }

 if (::listen(fd, 1) == -1) {
-if (errno != EADDRINUSE)
-panic("ListenSocket(listen): listen() failed!");
+panic_if(errno != EADDRINUSE,
+"ListenSocket(listen): listen() failed!");
 // User may decide to retry with a different port later; however,  
the

 // socket is already bound to a port and the next bind will surely
 // fail. We'll close the socket and reset fd to -1 so our user can
diff --git a/src/base/socket.hh b/src/base/socket.hh
index aa451b6..d2393e9 100644
--- a/src/base/socket.hh
+++ b/src/base/socket.hh
@@ -106,7 +106,7 @@

 virtual int accept();

-virtual bool listen(int port, bool reuse = true);
+virtual bool listen(int port);

 int getfd() const { return fd; }
 bool islistening() const { return listening; }
diff --git a/src/base/socket.test.cc b/src/base/socket.test.cc
index 1ab1f21..cb24c49 100644
--- a/src/base/socket.test.cc
+++ b/src/base/socket.test.cc
@@ -162,19 +162,6 @@
 EXPECT_FALSE(listen_socket.allDisabled());
 }

-TEST(SocketTest, ListenToPortReuseFalse)
-{
-MockListenSocket listen_socket;
-/*
- * The ListenSocket object should have the same state regardless as to
- * whether reuse is true or false (it is true by default).
- */
-EXPECT_TRUE(listen_socket.listen(TestPort1, false));
-EXPECT_NE(-1, listen_socket.getfd());
-EXPECT_TRUE(listen_socket.islistening());
-EXPECT_FALSE(listen_socket.allDisabled());
-}
-
 TEST(SocketTest, RelistenWithSameInstanceSamePort)
 {
 MockListenSocket listen_socket;
@@ -185,7 +172,9 @@
  */
 gtestLogOutput.str("");
 EXPECT_ANY_THROW(listen_socket.listen(TestPort1));
-std::string expected = "panic: Socket already listening!\n";
+std::string expect

[gem5-dev] [M] Change in gem5/gem5[develop]: base,cpu,dev: Simplify ListenSocket::listen().

2023-03-21 Thread Gabe Black (Gerrit) via gem5-dev
Gabe Black has uploaded this change for review. (  
https://gem5-review.googlesource.com/c/public/gem5/+/69159?usp=email )



Change subject: base,cpu,dev: Simplify ListenSocket::listen().
..

base,cpu,dev: Simplify ListenSocket::listen().

Remove the "reuse" parameter which default to true and was always
also explicitly set to true. Tidy up the code itself slightly, mostly
by using "panic_if" to remove some nesting.

Change-Id: Ie23971aabf2fe4252d27f1887468360722a72379
---
M src/base/remote_gdb.cc
M src/base/socket.cc
M src/base/socket.hh
M src/base/socket.test.cc
M src/base/vnc/vncserver.cc
M src/cpu/nativetrace.cc
M src/dev/net/ethertap.cc
M src/dev/serial/terminal.cc
8 files changed, 24 insertions(+), 38 deletions(-)



diff --git a/src/base/remote_gdb.cc b/src/base/remote_gdb.cc
index b709ac3..1a2fef4 100644
--- a/src/base/remote_gdb.cc
+++ b/src/base/remote_gdb.cc
@@ -417,7 +417,7 @@
 return;
 }

-while (!listener.listen(_port, true)) {
+while (!listener.listen(_port)) {
 DPRINTF(GDBMisc, "Can't bind port %d\n", _port);
 _port++;
 }
diff --git a/src/base/socket.cc b/src/base/socket.cc
index 0a62a88..280f92b 100644
--- a/src/base/socket.cc
+++ b/src/base/socket.cc
@@ -185,24 +185,20 @@

 // Create a socket and configure it for listening
 bool
-ListenSocket::listen(int port, bool reuse)
+ListenSocket::listen(int port)
 {
-if (listening)
-panic("Socket already listening!");
+panic_if(listening, "Socket already listening!");

 // only create socket if not already created by a previous call
 if (fd == -1) {
 fd = socketCloexec(PF_INET, SOCK_STREAM, 0);
-if (fd < 0)
-panic("Can't create socket:%s !", strerror(errno));
+panic_if(fd < 0, "Can't create socket:%s !", strerror(errno));
 }

-if (reuse) {
-int i = 1;
-if (::setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, (char *)&i,
- sizeof(i)) < 0)
-panic("ListenSocket(listen): setsockopt() SO_REUSEADDR  
failed!");

-}
+int i = 1;
+int ret = ::setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &i, sizeof(i));
+panic_if(ret < 0,
+"ListenSocket(listen): setsockopt() SO_REUSEADDR failed!");

 struct sockaddr_in sockaddr;
 sockaddr.sin_family = PF_INET;
@@ -211,16 +207,16 @@
 sockaddr.sin_port = htons(port);
 // finally clear sin_zero
 std::memset(&sockaddr.sin_zero, 0, sizeof(sockaddr.sin_zero));
-int ret = ::bind(fd, (struct sockaddr *)&sockaddr, sizeof (sockaddr));
+ret = ::bind(fd, (struct sockaddr *)&sockaddr, sizeof (sockaddr));
 if (ret != 0) {
-if (ret == -1 && errno != EADDRINUSE)
-panic("ListenSocket(listen): bind() failed!");
+panic_if(ret == -1 && errno != EADDRINUSE,
+"ListenSocket(listen): bind() failed!");
 return false;
 }

 if (::listen(fd, 1) == -1) {
-if (errno != EADDRINUSE)
-panic("ListenSocket(listen): listen() failed!");
+panic_if(errno != EADDRINUSE,
+"ListenSocket(listen): listen() failed!");
 // User may decide to retry with a different port later; however,  
the

 // socket is already bound to a port and the next bind will surely
 // fail. We'll close the socket and reset fd to -1 so our user can
diff --git a/src/base/socket.hh b/src/base/socket.hh
index aa451b6..d2393e9 100644
--- a/src/base/socket.hh
+++ b/src/base/socket.hh
@@ -106,7 +106,7 @@

 virtual int accept();

-virtual bool listen(int port, bool reuse = true);
+virtual bool listen(int port);

 int getfd() const { return fd; }
 bool islistening() const { return listening; }
diff --git a/src/base/socket.test.cc b/src/base/socket.test.cc
index 1ab1f21..cb24c49 100644
--- a/src/base/socket.test.cc
+++ b/src/base/socket.test.cc
@@ -162,19 +162,6 @@
 EXPECT_FALSE(listen_socket.allDisabled());
 }

-TEST(SocketTest, ListenToPortReuseFalse)
-{
-MockListenSocket listen_socket;
-/*
- * The ListenSocket object should have the same state regardless as to
- * whether reuse is true or false (it is true by default).
- */
-EXPECT_TRUE(listen_socket.listen(TestPort1, false));
-EXPECT_NE(-1, listen_socket.getfd());
-EXPECT_TRUE(listen_socket.islistening());
-EXPECT_FALSE(listen_socket.allDisabled());
-}
-
 TEST(SocketTest, RelistenWithSameInstanceSamePort)
 {
 MockListenSocket listen_socket;
@@ -185,7 +172,9 @@
  */
 gtestLogOutput.str("");
 EXPECT_ANY_THROW(listen_socket.listen(TestPort1));
-std::string expected = "panic: Socket already listening!\n";
+std::string expected =
+"panic: panic condition listening occurred: "
+"Socket already listening!\n";
 std::string actual = gtestLogOutput.str();
 EXPECT_EQ(expected, actual);
 }
@@ -201,7 +190,9 @@
 gtestLogOutput.str("");
 EXPECT_ANY_THROW