Gabe Black has submitted this change. ( https://gem5-review.googlesource.com/c/public/gem5/+/69169?usp=email )

Change subject: base: Remove the now unused UnixSocketAddr class and associated code.
......................................................................

base: Remove the now unused UnixSocketAddr class and associated code.

This job is now handled by the python param code, and the ListenSocket
classes.

Change-Id: I3a29b880b2484c5e25071bdef59fc73e1e8c2760
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/69169
Tested-by: kokoro <noreply+kok...@google.com>
Maintainer: Gabe Black <gabebl...@google.com>
Reviewed-by: Simon Park <seminp...@google.com>
---
M src/base/socket.cc
M src/base/socket.hh
M src/base/socket.test.cc
3 files changed, 0 insertions(+), 167 deletions(-)

Approvals:
  Simon Park: Looks good to me, approved
  Gabe Black: Looks good to me, approved
  kokoro: Regressions pass




diff --git a/src/base/socket.cc b/src/base/socket.cc
index a30c6af..76dc73f 100644
--- a/src/base/socket.cc
+++ b/src/base/socket.cc
@@ -61,75 +61,12 @@

 namespace gem5
 {
-namespace
-{
-
-bool
-isSocketNameAbstract(const std::string &path)
-{
-    if (path.empty()) {
-        return false;
-    }
-    // No null byte should be present in the path
-    return path.front() == '@';
-}
-
-std::string
-resolve(const std::string &path)
-{
-    if (path.empty()) {
-        return path;
-    }
-    if (isSocketNameAbstract(path)) {
-        return '\0' + path.substr(1);
-    }
-    return simout.resolve(path);
-}
-
-}  // namespace

 bool ListenSocket::listeningDisabled = false;
 bool ListenSocket::anyListening = false;

 bool ListenSocket::bindToLoopback = false;

-UnixSocketAddr
-UnixSocketAddr::build(const std::string &path)
-{
-    sockaddr_un addr = {.sun_family = AF_UNIX, .sun_path = {}};
-
-    const bool is_abstract = isSocketNameAbstract(path);
-    size_t max_len = sizeof(addr.sun_path);
-    if (!is_abstract) {
-        // File based socket names need to be null terminated
-        max_len -= 1;
-    }
-
-    std::string resolved_path = resolve(path);
-    std::string fmt_path = replace(resolved_path, '\0', '@');
-    if (resolved_path.size() > max_len) {
-        resolved_path = resolved_path.substr(0, max_len);
-        const std::string untruncated_path = std::move(fmt_path);
-        fmt_path = replace(resolved_path, '\0', '@');
-        warn("SocketPath: unix socket path truncated from '%s' to '%s'",
-             untruncated_path, fmt_path);
-    }
-
- // We can't use strncpy here, since abstract sockets start with \0 which
-    // will make strncpy think that the string is empty.
-    memcpy(addr.sun_path, resolved_path.c_str(), resolved_path.size());
-    // We can't use sizeof(sockaddr_un) for abstract sockets, since all
-    // sizeof(sun_path) bytes are used in representing the path.
-    const size_t path_size =
-        is_abstract ? resolved_path.size() : sizeof(addr.sun_path);
-    const size_t addr_size = offsetof(sockaddr_un, sun_path) + path_size;
-
-    return UnixSocketAddr{.addr = std::move(addr),
-                          .addrSize = addr_size,
-                          .isAbstract = is_abstract,
-                          .formattedPath = std::move(fmt_path)};
-}
-
 void
 ListenSocket::cleanup()
 {
diff --git a/src/base/socket.hh b/src/base/socket.hh
index 5ae02aa..b8828e7 100644
--- a/src/base/socket.hh
+++ b/src/base/socket.hh
@@ -43,37 +43,6 @@
 namespace gem5
 {

-/**
- * @brief Wrapper around sockaddr_un, so that it can be used for both file
- * based unix sockets as well as abstract unix sockets.
- */
-struct UnixSocketAddr
-{
-    /**
-     * @brief Builds UnixSocketAddr from the given path.
- * @pre: `path` either represents a file based unix socket, or an abstract - * unix socket. If `path` represents an abstract socket, it should
-     *       start with the character '@', and it should not have any null
-     *       bytes in the name.
-     * @param path: Pathname, where the socket should be instantiated.
-     * @return UnixSocketAddr
-     */
-    static UnixSocketAddr build(const std::string &path);
-
-    sockaddr_un addr;
-    // Size of `sockaddr_un addr`. This is equal to sizeof(sockaddr_un) if
- // `addr` represents a normal file based unix socket. For abstract sockets - // however, the size could be different. Because all sizeof(sun_path) is - // used to represent the name of an abstract socket, addrSize for abstract - // sockets only count the number of characters actually used by sun_path,
-    // excluding any trailing null bytes.
-    size_t addrSize;
-    bool isAbstract;
- // Formatted string for file based sockets look the same as addr.sun_path.
-    // For abstract sockets however, all null bytes are replaced with @
-    std::string formattedPath;
-};
-
 class ListenSocket : public Named
 {
   protected:
diff --git a/src/base/socket.test.cc b/src/base/socket.test.cc
index 7bf9e18..5fd0f3f 100644
--- a/src/base/socket.test.cc
+++ b/src/base/socket.test.cc
@@ -45,79 +45,6 @@
* socket.cc have not been fully tested due to interaction with system-calls.
  */

-namespace {
-
-std::string
-repeat(const std::string& str, size_t n)
-{
-    std::stringstream ss;
-    for (int i = 0; i < n; ++i) {
-        ss << str;
-    }
-    return ss.str();
-}
-
-} // namespace
-
-TEST(UnixSocketAddrTest, AbstractSocket)
-{
-    UnixSocketAddr sock_addr = UnixSocketAddr::build("@abstract");
-    EXPECT_EQ(AF_UNIX, sock_addr.addr.sun_family);
-    // null byte will not show, so compare from the first byte
-    EXPECT_STREQ("abstract", sock_addr.addr.sun_path + 1);
-    EXPECT_TRUE(sock_addr.isAbstract);
-    EXPECT_STREQ("@abstract", sock_addr.formattedPath.c_str());
-}
-
-TEST(UnixSocketAddrTest, TruncatedAbstractSocket)
-{
-    // Test that address is truncated if longer than sizeof(sun_path)
- constexpr size_t MaxSize = sizeof(std::declval<sockaddr_un>().sun_path);
-
-    // >sizeof(sun_path) bytes
-    std::string addr = "@" + repeat("123456789", 100);
-    ASSERT_GT(addr.size(), MaxSize);
-    std::string truncated_addr = addr.substr(0, MaxSize);
-
-    UnixSocketAddr sock_addr = UnixSocketAddr::build(addr);
-    EXPECT_EQ(AF_UNIX, sock_addr.addr.sun_family);
-    // Use memcmp so that we can compare null bytes as well
-    std::string null_formatted = '\0' + truncated_addr.substr(1);
- EXPECT_EQ(0, std::memcmp(null_formatted.c_str(), sock_addr.addr.sun_path,
-                             MaxSize));
-    EXPECT_TRUE(sock_addr.isAbstract);
-    EXPECT_EQ(truncated_addr, sock_addr.formattedPath);
-}
-
-TEST(UnixSocketAddrTest, FileBasedSocket)
-{
-    std::string addr = "/home/parent/dir/x";
-    UnixSocketAddr sock_addr = UnixSocketAddr::build(addr);
-    EXPECT_EQ(AF_UNIX, sock_addr.addr.sun_family);
-    EXPECT_STREQ(addr.c_str(), sock_addr.addr.sun_path);
-    EXPECT_FALSE(sock_addr.isAbstract);
-    EXPECT_EQ(addr, sock_addr.formattedPath);
-}
-
-TEST(UnixSocketAddrTest, TruncatedFileBasedSocket)
-{
-    // sun_path should null terminate, so test that address is truncated if
-    // longer than sizeof(sun_path) - 1 bytes.
-    constexpr size_t MaxSize =
-        sizeof(std::declval<sockaddr_un>().sun_path) - 1;
-
-    // >sizeof(sun_path) - 1 bytes
-    std::string addr = "/" + repeat("123456789", 100);
-    ASSERT_GT(addr.size(), MaxSize);
-    std::string truncated_addr = addr.substr(0, MaxSize);
-
-    UnixSocketAddr sock_addr = UnixSocketAddr::build(addr);
-    EXPECT_EQ(AF_UNIX, sock_addr.addr.sun_family);
-    EXPECT_STREQ(truncated_addr.c_str(), sock_addr.addr.sun_path);
-    EXPECT_FALSE(sock_addr.isAbstract);
-    EXPECT_EQ(truncated_addr, sock_addr.formattedPath);
-}
-
 class MockListenSocket : public ListenSocketInet
 {
   public:

--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/69169?usp=email To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings

Gerrit-Project: public/gem5
Gerrit-Branch: develop
Gerrit-Change-Id: I3a29b880b2484c5e25071bdef59fc73e1e8c2760
Gerrit-Change-Number: 69169
Gerrit-PatchSet: 8
Gerrit-Owner: Gabe Black <gabe.bl...@gmail.com>
Gerrit-Reviewer: Bobby Bruce <bbr...@ucdavis.edu>
Gerrit-Reviewer: Daniel Carvalho <oda...@yahoo.com.br>
Gerrit-Reviewer: Gabe Black <gabe.bl...@gmail.com>
Gerrit-Reviewer: Gabe Black <gabebl...@google.com>
Gerrit-Reviewer: Simon Park <seminp...@google.com>
Gerrit-Reviewer: kokoro <noreply+kok...@google.com>
Gerrit-MessageType: merged
_______________________________________________
gem5-dev mailing list -- gem5-dev@gem5.org
To unsubscribe send an email to gem5-dev-le...@gem5.org

Reply via email to