gem5-dev@gem5.org

The gem5 Developer List

View all threads

[S] Change in gem5/gem5[develop]: base,dev: Simplify the ListenSocket::accept method.

GB
Gabe Black (Gerrit)
Wed, Mar 22, 2023 8:27 AM

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

Change subject: base,dev: Simplify the ListenSocket::accept method.
......................................................................

base,dev: Simplify the ListenSocket::accept method.

Remove the nodelay option which is always set to the same thing, and
simplify the logic of the method itself.

Change-Id: I78cd91f99cbaec9abddedbc7dcddc563daedb81f
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/69158
Tested-by: kokoro noreply+kokoro@google.com
Maintainer: Gabe Black gabeblack@google.com
Reviewed-by: Yu-hsin Wang yuhsingw@google.com

M src/base/remote_gdb.cc
M src/base/socket.cc
M src/base/socket.hh
M src/base/vnc/vncserver.cc
M src/dev/net/ethertap.cc
M src/dev/serial/terminal.cc
6 files changed, 12 insertions(+), 12 deletions(-)

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

diff --git a/src/base/remote_gdb.cc b/src/base/remote_gdb.cc
index dd37a35..b709ac3 100644
--- a/src/base/remote_gdb.cc
+++ b/src/base/remote_gdb.cc
@@ -438,7 +438,7 @@

  pollQueue.remove(incomingConnectionEvent);
  • int sfd = listener.accept(true);
  • int sfd = listener.accept();

    if (sfd != -1) {
    if (isAttached())
    diff --git a/src/base/socket.cc b/src/base/socket.cc
    index 23f2b40..0a62a88 100644
    --- a/src/base/socket.cc
    +++ b/src/base/socket.cc
    @@ -239,17 +239,17 @@
    // Open a connection.  Accept will block, so if you don't want it to,
    // make sure a connection is ready before you call accept.
    int
    -ListenSocket::accept(bool nodelay)
    +ListenSocket::accept()
    {
    struct sockaddr_in sockaddr;
    socklen_t slen = sizeof (sockaddr);
    int sfd = acceptCloexec(fd, (struct sockaddr *)&sockaddr, &slen);

  • if (sfd != -1 && nodelay) {
  •    int i = 1;
    
  •    if (::setsockopt(sfd, IPPROTO_TCP, TCP_NODELAY, (char *)&i,
    
  •                     sizeof(i)) < 0)
    
  •        warn("ListenSocket(accept): setsockopt() TCP_NODELAY failed!");
    
  • }
  • if (sfd == -1)

  •    return -1;
    
  • int i = 1;

  • int ret = ::setsockopt(sfd, IPPROTO_TCP, TCP_NODELAY, &i, sizeof(i));

  • warn_if(ret < 0, "ListenSocket(accept): setsockopt() TCP_NODELAY
    failed!");

    return sfd;
    }
    diff --git a/src/base/socket.hh b/src/base/socket.hh
    index af4a651..aa451b6 100644
    --- a/src/base/socket.hh
    +++ b/src/base/socket.hh
    @@ -104,7 +104,7 @@
    ListenSocket();
    virtual ~ListenSocket();

  • virtual int accept(bool nodelay = true);
  • virtual int accept();

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

diff --git a/src/base/vnc/vncserver.cc b/src/base/vnc/vncserver.cc
index c98838a..5792c44 100644
--- a/src/base/vnc/vncserver.cc
+++ b/src/base/vnc/vncserver.cc
@@ -190,7 +190,7 @@
if (!listener.islistening())
panic("%s: cannot accept a connection if not listening!", name());

  • int fd = listener.accept(true);
  • int fd = listener.accept();
    if (fd < 0) {
    warn("%s: failed to accept VNC connection!", name());
    return;
    diff --git a/src/dev/net/ethertap.cc b/src/dev/net/ethertap.cc
    index 5b1e957..b28f255 100644
    --- a/src/dev/net/ethertap.cc
    +++ b/src/dev/net/ethertap.cc
    @@ -280,7 +280,7 @@
    if (!listener.islistening())
    panic("TapListener(accept): cannot accept if we're not
    listening!");
  • int sfd = listener.accept(true);
  • int sfd = listener.accept();
    if (sfd != -1)
    tap->attach(sfd);
    }
    diff --git a/src/dev/serial/terminal.cc b/src/dev/serial/terminal.cc
    index d4108a3..fada99c 100644
    --- a/src/dev/serial/terminal.cc
    +++ b/src/dev/serial/terminal.cc
    @@ -195,7 +195,7 @@
    if (!listener.islistening())
    panic("%s: cannot accept a connection if not listening!", name());
  • int fd = listener.accept(true);
  • int fd = listener.accept();
    if (data_fd != -1) {
    char message[] = "terminal already attached!\n";
    atomic_write(fd, message, sizeof(message));

--
To view, visit
https://gem5-review.googlesource.com/c/public/gem5/+/69158?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: I78cd91f99cbaec9abddedbc7dcddc563daedb81f
Gerrit-Change-Number: 69158
Gerrit-PatchSet: 3
Gerrit-Owner: Gabe Black gabe.black@gmail.com
Gerrit-Reviewer: Bobby Bruce bbruce@ucdavis.edu
Gerrit-Reviewer: Daniel Carvalho odanrc@yahoo.com.br
Gerrit-Reviewer: Gabe Black gabe.black@gmail.com
Gerrit-Reviewer: Gabe Black gabeblack@google.com
Gerrit-Reviewer: Yu-hsin Wang yuhsingw@google.com
Gerrit-Reviewer: kokoro noreply+kokoro@google.com
Gerrit-MessageType: merged

Gabe Black has submitted this change. ( https://gem5-review.googlesource.com/c/public/gem5/+/69158?usp=email ) Change subject: base,dev: Simplify the ListenSocket::accept method. ...................................................................... base,dev: Simplify the ListenSocket::accept method. Remove the nodelay option which is always set to the same thing, and simplify the logic of the method itself. Change-Id: I78cd91f99cbaec9abddedbc7dcddc563daedb81f Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/69158 Tested-by: kokoro <noreply+kokoro@google.com> Maintainer: Gabe Black <gabeblack@google.com> Reviewed-by: Yu-hsin Wang <yuhsingw@google.com> --- M src/base/remote_gdb.cc M src/base/socket.cc M src/base/socket.hh M src/base/vnc/vncserver.cc M src/dev/net/ethertap.cc M src/dev/serial/terminal.cc 6 files changed, 12 insertions(+), 12 deletions(-) Approvals: Gabe Black: Looks good to me, approved kokoro: Regressions pass Yu-hsin Wang: Looks good to me, approved diff --git a/src/base/remote_gdb.cc b/src/base/remote_gdb.cc index dd37a35..b709ac3 100644 --- a/src/base/remote_gdb.cc +++ b/src/base/remote_gdb.cc @@ -438,7 +438,7 @@ pollQueue.remove(incomingConnectionEvent); - int sfd = listener.accept(true); + int sfd = listener.accept(); if (sfd != -1) { if (isAttached()) diff --git a/src/base/socket.cc b/src/base/socket.cc index 23f2b40..0a62a88 100644 --- a/src/base/socket.cc +++ b/src/base/socket.cc @@ -239,17 +239,17 @@ // Open a connection. Accept will block, so if you don't want it to, // make sure a connection is ready before you call accept. int -ListenSocket::accept(bool nodelay) +ListenSocket::accept() { struct sockaddr_in sockaddr; socklen_t slen = sizeof (sockaddr); int sfd = acceptCloexec(fd, (struct sockaddr *)&sockaddr, &slen); - if (sfd != -1 && nodelay) { - int i = 1; - if (::setsockopt(sfd, IPPROTO_TCP, TCP_NODELAY, (char *)&i, - sizeof(i)) < 0) - warn("ListenSocket(accept): setsockopt() TCP_NODELAY failed!"); - } + if (sfd == -1) + return -1; + + int i = 1; + int ret = ::setsockopt(sfd, IPPROTO_TCP, TCP_NODELAY, &i, sizeof(i)); + warn_if(ret < 0, "ListenSocket(accept): setsockopt() TCP_NODELAY failed!"); return sfd; } diff --git a/src/base/socket.hh b/src/base/socket.hh index af4a651..aa451b6 100644 --- a/src/base/socket.hh +++ b/src/base/socket.hh @@ -104,7 +104,7 @@ ListenSocket(); virtual ~ListenSocket(); - virtual int accept(bool nodelay = true); + virtual int accept(); virtual bool listen(int port, bool reuse = true); diff --git a/src/base/vnc/vncserver.cc b/src/base/vnc/vncserver.cc index c98838a..5792c44 100644 --- a/src/base/vnc/vncserver.cc +++ b/src/base/vnc/vncserver.cc @@ -190,7 +190,7 @@ if (!listener.islistening()) panic("%s: cannot accept a connection if not listening!", name()); - int fd = listener.accept(true); + int fd = listener.accept(); if (fd < 0) { warn("%s: failed to accept VNC connection!", name()); return; diff --git a/src/dev/net/ethertap.cc b/src/dev/net/ethertap.cc index 5b1e957..b28f255 100644 --- a/src/dev/net/ethertap.cc +++ b/src/dev/net/ethertap.cc @@ -280,7 +280,7 @@ if (!listener.islistening()) panic("TapListener(accept): cannot accept if we're not listening!"); - int sfd = listener.accept(true); + int sfd = listener.accept(); if (sfd != -1) tap->attach(sfd); } diff --git a/src/dev/serial/terminal.cc b/src/dev/serial/terminal.cc index d4108a3..fada99c 100644 --- a/src/dev/serial/terminal.cc +++ b/src/dev/serial/terminal.cc @@ -195,7 +195,7 @@ if (!listener.islistening()) panic("%s: cannot accept a connection if not listening!", name()); - int fd = listener.accept(true); + int fd = listener.accept(); if (data_fd != -1) { char message[] = "terminal already attached!\n"; atomic_write(fd, message, sizeof(message)); -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/69158?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: I78cd91f99cbaec9abddedbc7dcddc563daedb81f Gerrit-Change-Number: 69158 Gerrit-PatchSet: 3 Gerrit-Owner: Gabe Black <gabe.black@gmail.com> Gerrit-Reviewer: Bobby Bruce <bbruce@ucdavis.edu> Gerrit-Reviewer: Daniel Carvalho <odanrc@yahoo.com.br> Gerrit-Reviewer: Gabe Black <gabe.black@gmail.com> Gerrit-Reviewer: Gabe Black <gabeblack@google.com> Gerrit-Reviewer: Yu-hsin Wang <yuhsingw@google.com> Gerrit-Reviewer: kokoro <noreply+kokoro@google.com> Gerrit-MessageType: merged