[Lldb-commits] [lldb] r223392 - Revert "Use timeout when reading debugserver's port from a named pipe."

Zachary Turner zturner at google.com
Thu Dec 4 14:06:42 PST 2014


Author: zturner
Date: Thu Dec  4 16:06:42 2014
New Revision: 223392

URL: http://llvm.org/viewvc/llvm-project?rev=223392&view=rev
Log:
Revert "Use timeout when reading debugserver's port from a named pipe."

This reverts commit 4a5ad2c077166cc3d6e7ab4cc6e3dcbbe922af86.

Windows doesn't support select() for pipe objects, and this also fails
to compile on Windows.  Reverting this until we can get it sorted out
to keep the windows build working.

Modified:
    lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteCommunication.cpp

Modified: lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteCommunication.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteCommunication.cpp?rev=223392&r1=223391&r2=223392&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteCommunication.cpp (original)
+++ lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteCommunication.cpp Thu Dec  4 16:06:42 2014
@@ -13,7 +13,6 @@
 // C Includes
 #include <limits.h>
 #include <string.h>
-#include <sys/select.h>
 #include <sys/stat.h>
 
 // C++ Includes
@@ -43,50 +42,6 @@
 using namespace lldb;
 using namespace lldb_private;
 
-namespace
-{
-
-Error
-ReadPortFromPipe (const char *const named_pipe_path, uint16_t& port, const int timeout_secs)
-{
-    File name_pipe_file;
-    auto error = name_pipe_file.Open (named_pipe_path, File::eOpenOptionRead | File::eOpenOptionNonBlocking);
-    if (error.Fail ())
-        return error;
-
-    struct timeval tv = {timeout_secs, 0};
-    const auto pipe_handle = name_pipe_file.GetWaitableHandle ();
-    fd_set rfds;
-    FD_ZERO(&rfds);
-    FD_SET(pipe_handle, &rfds);
-
-    const auto retval = ::select (pipe_handle + 1, &rfds, NULL, NULL, &tv);
-    if (retval == -1)
-    {
-        error.SetErrorToErrno ();
-        return error;
-    }
-    if (retval == 0)
-    {
-        error.SetErrorString ("timeout exceeded");
-        return error;
-    }
-
-    char port_cstr[256];
-    port_cstr[0] = '\0';
-    size_t num_bytes = sizeof(port_cstr);
-    error = name_pipe_file.Read (port_cstr, num_bytes);
-
-    if (error.Success ())
-    {
-        assert (num_bytes > 0 && port_cstr[num_bytes-1] == '\0');
-        port = Args::StringToUInt32 (port_cstr, 0);
-    }
-    return error;
-}
-
-}
-
 GDBRemoteCommunication::History::History (uint32_t size) :
     m_packets(),
     m_curr_idx (0),
@@ -917,23 +872,25 @@ GDBRemoteCommunication::StartDebugserver
         launch_info.AppendSuppressFileAction (STDIN_FILENO, true, false);
         launch_info.AppendSuppressFileAction (STDOUT_FILENO, false, true);
         launch_info.AppendSuppressFileAction (STDERR_FILENO, false, true);
-
+        
         error = Host::LaunchProcess(launch_info);
-
+        
         if (error.Success() && launch_info.GetProcessID() != LLDB_INVALID_PROCESS_ID)
         {
             if (named_pipe_path[0])
             {
-                error = ReadPortFromPipe(named_pipe_path, out_port, 10);
+                File name_pipe_file;
+                error = name_pipe_file.Open(named_pipe_path, File::eOpenOptionRead);
                 if (error.Success())
                 {
-                    if (log)
-                        log->Printf("GDBRemoteCommunication::%s() debugserver listens %u port", __FUNCTION__, out_port);
-                }
-                else
-                {
-                    if (log)
-                        log->Printf("GDBRemoteCommunication::%s() failed to read a port value from named pipe %s: %s", __FUNCTION__, named_pipe_path, error.AsCString());
+                    char port_cstr[256];
+                    port_cstr[0] = '\0';
+                    size_t num_bytes = sizeof(port_cstr);
+                    error = name_pipe_file.Read(port_cstr, num_bytes);
+                    assert (error.Success());
+                    assert (num_bytes > 0 && port_cstr[num_bytes-1] == '\0');
+                    out_port = Args::StringToUInt32(port_cstr, 0);
+                    name_pipe_file.Close();
                 }
                 FileSystem::Unlink(named_pipe_path);
             }





More information about the lldb-commits mailing list