diff options
| author | Pavel Labath <labath@google.com> | 2018-05-09 14:29:30 +0000 |
|---|---|---|
| committer | Pavel Labath <labath@google.com> | 2018-05-09 14:29:30 +0000 |
| commit | 3879fe0099c62d2afa67048e41f0426daea688ae (patch) | |
| tree | fd3aa4f3085bba40040eab691764242fc0c0397f /lldb/source/Target | |
| parent | e253f2f886a980c227a35508601bd0a6a5aba5c6 (diff) | |
| download | bcm5719-llvm-3879fe0099c62d2afa67048e41f0426daea688ae.tar.gz bcm5719-llvm-3879fe0099c62d2afa67048e41f0426daea688ae.zip | |
Modernize and clean-up the Predicate class
Summary:
The comments on this class were out of date with the implementation, and
the implementation itself was inconsistent with our usage of the Timeout
class (I started converting everything to use this class back in D27136,
but I missed this one). I avoid duplicating the waiting logic by
introducing a templated WaitFor function, and make other functions
delegate to that. This function can be also used as a replacement for
the unused WaitForBitToBeSet functions I removed, if it turns out to be
necessary.
As this changes the meaning of a "zero" timeout, I tracked down all the
callers of these functions and updated them accordingly. Propagating the
changes to all the callers of RunShellCommand was a bit too much for
this patch, so I stopped there and will continue that in a follow-up
patch.
I also add some basic unittests for the functions I modified.
Reviewers: jingham, clayborg
Subscribers: mgorny, lldb-commits
Differential Revision: https://reviews.llvm.org/D46580
llvm-svn: 331880
Diffstat (limited to 'lldb/source/Target')
| -rw-r--r-- | lldb/source/Target/Process.cpp | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/lldb/source/Target/Process.cpp b/lldb/source/Target/Process.cpp index bbad51a4f1e..f957645e078 100644 --- a/lldb/source/Target/Process.cpp +++ b/lldb/source/Target/Process.cpp @@ -947,21 +947,25 @@ StateType Process::GetNextEvent(EventSP &event_sp) { return state; } -void Process::SyncIOHandler(uint32_t iohandler_id, uint64_t timeout_msec) { +void Process::SyncIOHandler(uint32_t iohandler_id, + const Timeout<std::micro> &timeout) { // don't sync (potentially context switch) in case where there is no process // IO if (!m_process_input_reader) return; - uint32_t new_iohandler_id = 0; - m_iohandler_sync.WaitForValueNotEqualTo( - iohandler_id, new_iohandler_id, std::chrono::milliseconds(timeout_msec)); + auto Result = m_iohandler_sync.WaitForValueNotEqualTo(iohandler_id, timeout); Log *log(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_PROCESS)); - if (log) - log->Printf("Process::%s waited for m_iohandler_sync to change from %u, " - "new value is %u", - __FUNCTION__, iohandler_id, new_iohandler_id); + if (Result) { + LLDB_LOG( + log, + "waited from m_iohandler_sync to change from {0}. New value is {1}.", + iohandler_id, *Result); + } else { + LLDB_LOG(log, "timed out waiting for m_iohandler_sync to change from {0}.", + iohandler_id); + } } StateType Process::WaitForProcessToStop(const Timeout<std::micro> &timeout, |

