Remove usage of usleep in generic code

This function is not portable, and there are only a handful of usages of
it anyway. Replacing it with std::this_thread::sleep_for enables us to
get rid of the compatibility code in PosixApi.h.

llvm-svn: 367814
This commit is contained in:
Pavel Labath 2019-08-05 08:23:25 +00:00
parent 801d3304e9
commit 3d4f7655e7
5 changed files with 8 additions and 13 deletions

View File

@ -80,7 +80,6 @@ int vasprintf(char **ret, const char *fmt, va_list ap);
char *strcasestr(const char *s, const char *find);
char *realpath(const char *name, char *resolved);
int usleep(uint32_t useconds);
char *basename(char *path);
char *dirname(char *path);

View File

@ -199,11 +199,6 @@ int strncasecmp(const char *s1, const char *s2, size_t n) {
return strnicmp(s1, s2, n);
}
int usleep(uint32_t useconds) {
Sleep(useconds / 1000);
return 0;
}
#if _MSC_VER < 1900
namespace lldb_private {
int vsnprintf(char *buffer, size_t count, const char *format, va_list argptr) {

View File

@ -15,6 +15,7 @@
#include <cstring>
#include <mutex>
#include <sstream>
#include <thread>
#include "llvm/Support/FileSystem.h"
#include "llvm/Support/Threading.h"
@ -280,10 +281,9 @@ bool GDBRemoteCommunicationServerPlatform::KillSpawnedProcess(lldb::pid_t pid) {
return true;
}
}
usleep(10000);
std::this_thread::sleep_for(std::chrono::milliseconds(10));
}
// check one more time after the final usleep
{
std::lock_guard<std::recursive_mutex> guard(m_spawned_pids_mutex);
if (m_spawned_pids.find(pid) == m_spawned_pids.end())
@ -302,10 +302,10 @@ bool GDBRemoteCommunicationServerPlatform::KillSpawnedProcess(lldb::pid_t pid) {
return true;
}
}
usleep(10000);
std::this_thread::sleep_for(std::chrono::milliseconds(10));
}
// check one more time after the final usleep Scope for locker
// check one more time after the final sleep
{
std::lock_guard<std::recursive_mutex> guard(m_spawned_pids_mutex);
if (m_spawned_pids.find(pid) == m_spawned_pids.end())

View File

@ -1032,7 +1032,7 @@ Status ProcessGDBRemote::ConnectToDebugserver(llvm::StringRef connect_url) {
if (retry_count >= max_retry_count)
break;
usleep(100000);
std::this_thread::sleep_for(std::chrono::milliseconds(100));
}
}
}
@ -3591,7 +3591,8 @@ bool ProcessGDBRemote::MonitorDebugserverProcess(
// Sleep for a half a second to make sure our inferior process has time to
// set its exit status before we set it incorrectly when both the debugserver
// and the inferior process shut down.
usleep(500000);
std::this_thread::sleep_for(std::chrono::milliseconds(500));
// If our process hasn't yet exited, debugserver might have died. If the
// process did exit, then we are reaping it.
const StateType state = process_sp->GetState();

View File

@ -4954,7 +4954,7 @@ Process::RunThreadPlan(ExecutionContext &exe_ctx,
#ifdef LLDB_RUN_THREAD_HALT_WITH_EVENT
// See comment above...
if (miss_first_event) {
usleep(1000);
std::this_thread::sleep_for(std::chrono::milliseconds(1));
miss_first_event = false;
got_event = false;
} else