diff --git a/llvm/include/llvm/Support/LockFileManager.h b/llvm/include/llvm/Support/LockFileManager.h index 57e4fbd84cd954..2efeca3b620018 100644 --- a/llvm/include/llvm/Support/LockFileManager.h +++ b/llvm/include/llvm/Support/LockFileManager.h @@ -77,7 +77,9 @@ class LockFileManager { operator LockFileState() const { return getState(); } /// For a shared lock, wait until the owner releases the lock. - WaitForUnlockResult waitForUnlock(); + /// Total timeout for the file to appear is ~1.5 minutes. + /// \param MaxSeconds the maximum wait time per iteration in seconds. + WaitForUnlockResult waitForUnlock(const unsigned MaxSeconds = 40); /// Remove the lock file. This may delete a different lock file than /// the one previously read if there is a race. diff --git a/llvm/lib/Support/LockFileManager.cpp b/llvm/lib/Support/LockFileManager.cpp index 10181192afbd8d..5c6508c3b007bb 100644 --- a/llvm/lib/Support/LockFileManager.cpp +++ b/llvm/lib/Support/LockFileManager.cpp @@ -290,7 +290,8 @@ LockFileManager::~LockFileManager() { sys::DontRemoveFileOnSignal(UniqueLockFileName); } -LockFileManager::WaitForUnlockResult LockFileManager::waitForUnlock() { +LockFileManager::WaitForUnlockResult +LockFileManager::waitForUnlock(const unsigned MaxSeconds) { if (getState() != LFS_Shared) return Res_Success; @@ -301,9 +302,6 @@ LockFileManager::WaitForUnlockResult LockFileManager::waitForUnlock() { Interval.tv_sec = 0; Interval.tv_nsec = 1000000; #endif - // Don't wait more than 40s per iteration. Total timeout for the file - // to appear is ~1.5 minutes. - const unsigned MaxSeconds = 40; do { // Sleep for the designated interval, to allow the owning process time to // finish up and remove the lock file.