@@ -522,19 +522,17 @@ static bool FBSAddEventDataToOptions(NSMutableDictionary *options,
522
522
MachProcess::MachProcess ()
523
523
: m_pid (0 ), m_cpu_type (0 ), m_child_stdin (-1 ), m_child_stdout (-1 ),
524
524
m_child_stderr (-1 ), m_path (), m_args (), m_task (this ),
525
- m_flags (eMachProcessFlagsNone), m_stdio_thread (0 ),
526
- m_stdio_mutex (PTHREAD_MUTEX_RECURSIVE), m_stdout_data (),
527
- m_profile_enabled (false ), m_profile_interval_usec (0 ), m_profile_thread (0 ),
528
- m_profile_data_mutex (PTHREAD_MUTEX_RECURSIVE), m_profile_data (),
525
+ m_flags (eMachProcessFlagsNone), m_stdio_thread (0 ), m_stdio_mutex (),
526
+ m_stdout_data (), m_profile_enabled (false ), m_profile_interval_usec (0 ),
527
+ m_profile_thread (0 ), m_profile_data_mutex (), m_profile_data (),
529
528
m_profile_events (0 , eMachProcessProfileCancel), m_thread_actions (),
530
- m_exception_messages (),
531
- m_exception_and_signal_mutex (PTHREAD_MUTEX_RECURSIVE), m_thread_list (),
532
- m_activities (), m_state (eStateUnloaded),
533
- m_state_mutex (PTHREAD_MUTEX_RECURSIVE), m_events (0 , kAllEventsMask ),
534
- m_private_events (0 , kAllEventsMask ), m_breakpoints (), m_watchpoints (),
535
- m_name_to_addr_callback (NULL ), m_name_to_addr_baton (NULL ),
536
- m_image_infos_callback (NULL ), m_image_infos_baton (NULL ),
537
- m_sent_interrupt_signo (0 ), m_auto_resume_signo (0 ), m_did_exec (false ),
529
+ m_exception_messages (), m_exception_and_signal_mutex (), m_thread_list (),
530
+ m_activities (), m_state (eStateUnloaded), m_state_mutex (),
531
+ m_events (0 , kAllEventsMask ), m_private_events (0 , kAllEventsMask ),
532
+ m_breakpoints (), m_watchpoints (), m_name_to_addr_callback (NULL ),
533
+ m_name_to_addr_baton (NULL ), m_image_infos_callback (NULL ),
534
+ m_image_infos_baton (NULL ), m_sent_interrupt_signo (0 ),
535
+ m_auto_resume_signo (0 ), m_did_exec (false ),
538
536
m_dyld_process_info_create (nullptr ),
539
537
m_dyld_process_info_for_each_image (nullptr ),
540
538
m_dyld_process_info_release (nullptr ),
@@ -577,7 +575,7 @@ static bool FBSAddEventDataToOptions(NSMutableDictionary *options,
577
575
578
576
nub_state_t MachProcess::GetState () {
579
577
// If any other threads access this we will need a mutex for it
580
- PTHREAD_MUTEX_LOCKER (locker, m_state_mutex);
578
+ std::lock_guard<std::recursive_mutex> guard ( m_state_mutex);
581
579
return m_state;
582
580
}
583
581
@@ -1279,7 +1277,7 @@ static bool mach_header_validity_test(uint32_t magic, uint32_t cputype) {
1279
1277
1280
1278
// Scope for mutex locker
1281
1279
{
1282
- PTHREAD_MUTEX_LOCKER (locker, m_state_mutex);
1280
+ std::lock_guard<std::recursive_mutex> guard ( m_state_mutex);
1283
1281
const nub_state_t old_state = m_state;
1284
1282
1285
1283
if (old_state == eStateExited) {
@@ -1338,7 +1336,7 @@ static bool mach_header_validity_test(uint32_t magic, uint32_t cputype) {
1338
1336
m_stop_count = 0 ;
1339
1337
m_thread_list.Clear ();
1340
1338
{
1341
- PTHREAD_MUTEX_LOCKER (locker, m_exception_and_signal_mutex);
1339
+ std::lock_guard<std::recursive_mutex> guard ( m_exception_and_signal_mutex);
1342
1340
m_exception_messages.clear ();
1343
1341
m_sent_interrupt_signo = 0 ;
1344
1342
m_auto_resume_signo = 0 ;
@@ -1578,7 +1576,7 @@ static uint64_t bits(uint64_t value, uint32_t msbit, uint32_t lsbit) {
1578
1576
bool MachProcess::Interrupt () {
1579
1577
nub_state_t state = GetState ();
1580
1578
if (IsRunning (state)) {
1581
- PTHREAD_MUTEX_LOCKER (locker, m_exception_and_signal_mutex);
1579
+ std::lock_guard<std::recursive_mutex> guard ( m_exception_and_signal_mutex);
1582
1580
if (m_sent_interrupt_signo == 0 ) {
1583
1581
m_sent_interrupt_signo = SIGSTOP;
1584
1582
if (Signal (m_sent_interrupt_signo)) {
@@ -1736,7 +1734,7 @@ static uint64_t bits(uint64_t value, uint32_t msbit, uint32_t lsbit) {
1736
1734
m_thread_actions.Append (thread_action);
1737
1735
m_thread_actions.SetDefaultThreadActionIfNeeded (eStateRunning, 0 );
1738
1736
1739
- PTHREAD_MUTEX_LOCKER (locker, m_exception_and_signal_mutex);
1737
+ std::lock_guard<std::recursive_mutex> guard ( m_exception_and_signal_mutex);
1740
1738
1741
1739
ReplyToAllExceptions ();
1742
1740
}
@@ -1862,7 +1860,7 @@ static uint64_t bits(uint64_t value, uint32_t msbit, uint32_t lsbit) {
1862
1860
}
1863
1861
1864
1862
void MachProcess::ReplyToAllExceptions () {
1865
- PTHREAD_MUTEX_LOCKER (locker, m_exception_and_signal_mutex);
1863
+ std::lock_guard<std::recursive_mutex> guard ( m_exception_and_signal_mutex);
1866
1864
if (!m_exception_messages.empty ()) {
1867
1865
MachException::Message::iterator pos;
1868
1866
MachException::Message::iterator begin = m_exception_messages.begin ();
@@ -1896,7 +1894,7 @@ static uint64_t bits(uint64_t value, uint32_t msbit, uint32_t lsbit) {
1896
1894
}
1897
1895
}
1898
1896
void MachProcess::PrivateResume () {
1899
- PTHREAD_MUTEX_LOCKER (locker, m_exception_and_signal_mutex);
1897
+ std::lock_guard<std::recursive_mutex> guard ( m_exception_and_signal_mutex);
1900
1898
1901
1899
m_auto_resume_signo = m_sent_interrupt_signo;
1902
1900
if (m_auto_resume_signo)
@@ -2298,7 +2296,7 @@ static uint64_t bits(uint64_t value, uint32_t msbit, uint32_t lsbit) {
2298
2296
// data has already been copied.
2299
2297
void MachProcess::ExceptionMessageReceived (
2300
2298
const MachException::Message &exceptionMessage) {
2301
- PTHREAD_MUTEX_LOCKER (locker, m_exception_and_signal_mutex);
2299
+ std::lock_guard<std::recursive_mutex> guard ( m_exception_and_signal_mutex);
2302
2300
2303
2301
if (m_exception_messages.empty ())
2304
2302
m_task.Suspend ();
@@ -2312,7 +2310,7 @@ static uint64_t bits(uint64_t value, uint32_t msbit, uint32_t lsbit) {
2312
2310
2313
2311
task_t MachProcess::ExceptionMessageBundleComplete () {
2314
2312
// We have a complete bundle of exceptions for our child process.
2315
- PTHREAD_MUTEX_LOCKER (locker, m_exception_and_signal_mutex);
2313
+ std::lock_guard<std::recursive_mutex> guard ( m_exception_and_signal_mutex);
2316
2314
DNBLogThreadedIf (LOG_EXCEPTIONS, " %s: %llu exception messages." ,
2317
2315
__PRETTY_FUNCTION__, (uint64_t )m_exception_messages.size ());
2318
2316
bool auto_resume = false ;
@@ -2495,7 +2493,7 @@ static uint64_t bits(uint64_t value, uint32_t msbit, uint32_t lsbit) {
2495
2493
void MachProcess::AppendSTDOUT (char *s, size_t len) {
2496
2494
DNBLogThreadedIf (LOG_PROCESS, " MachProcess::%s (<%llu> %s) ..." , __FUNCTION__,
2497
2495
(uint64_t )len, s);
2498
- PTHREAD_MUTEX_LOCKER (locker, m_stdio_mutex);
2496
+ std::lock_guard<std::recursive_mutex> guard ( m_stdio_mutex);
2499
2497
m_stdout_data.append (s, len);
2500
2498
m_events.SetEvents (eEventStdioAvailable);
2501
2499
@@ -2506,7 +2504,7 @@ static uint64_t bits(uint64_t value, uint32_t msbit, uint32_t lsbit) {
2506
2504
size_t MachProcess::GetAvailableSTDOUT (char *buf, size_t buf_size) {
2507
2505
DNBLogThreadedIf (LOG_PROCESS, " MachProcess::%s (&%p[%llu]) ..." , __FUNCTION__,
2508
2506
static_cast <void *>(buf), (uint64_t )buf_size);
2509
- PTHREAD_MUTEX_LOCKER (locker, m_stdio_mutex);
2507
+ std::lock_guard<std::recursive_mutex> guard ( m_stdio_mutex);
2510
2508
size_t bytes_available = m_stdout_data.size ();
2511
2509
if (bytes_available > 0 ) {
2512
2510
if (bytes_available > buf_size) {
@@ -2733,7 +2731,7 @@ static uint64_t bits(uint64_t value, uint32_t msbit, uint32_t lsbit) {
2733
2731
2734
2732
void MachProcess::SignalAsyncProfileData (const char *info) {
2735
2733
DNBLogThreadedIf (LOG_PROCESS, " MachProcess::%s (%s) ..." , __FUNCTION__, info);
2736
- PTHREAD_MUTEX_LOCKER (locker, m_profile_data_mutex);
2734
+ std::lock_guard<std::recursive_mutex> guard ( m_profile_data_mutex);
2737
2735
m_profile_data.push_back (info);
2738
2736
m_events.SetEvents (eEventProfileDataAvailable);
2739
2737
@@ -2744,7 +2742,7 @@ static uint64_t bits(uint64_t value, uint32_t msbit, uint32_t lsbit) {
2744
2742
size_t MachProcess::GetAsyncProfileData (char *buf, size_t buf_size) {
2745
2743
DNBLogThreadedIf (LOG_PROCESS, " MachProcess::%s (&%p[%llu]) ..." , __FUNCTION__,
2746
2744
static_cast <void *>(buf), (uint64_t )buf_size);
2747
- PTHREAD_MUTEX_LOCKER (locker, m_profile_data_mutex);
2745
+ std::lock_guard<std::recursive_mutex> guard ( m_profile_data_mutex);
2748
2746
if (m_profile_data.empty ())
2749
2747
return 0 ;
2750
2748
0 commit comments