Merge ~info-martin-konrad/epics-base:replace-usleep into ~epics-core/epics-base/+git/epics-base:3.15

Proposed by Martin Konrad
Status: Merged
Approved by: Andrew Johnson
Approved revision: f9820577c1908ce7442ef4cae2b963f9a5ba78e5
Merged at revision: b2160bd618d8f54690c59fe69f8bab8984739ace
Proposed branch: ~info-martin-konrad/epics-base:replace-usleep
Merge into: ~epics-core/epics-base/+git/epics-base:3.15
Diff against target: 17 lines (+4/-2)
1 file modified
src/libCom/osi/os/posix/epicsAtomicOSD.cpp (+4/-2)
Reviewer Review Type Date Requested Status
Andrew Johnson Approve
Review via email: mp+380229@code.launchpad.net
To post a comment you must log in.
Revision history for this message
Andrew Johnson (anj) wrote :

Looks reasonable to me, although I haven't tested it.

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1diff --git a/src/libCom/osi/os/posix/epicsAtomicOSD.cpp b/src/libCom/osi/os/posix/epicsAtomicOSD.cpp
2index 1cc227f..a449a69 100644
3--- a/src/libCom/osi/os/posix/epicsAtomicOSD.cpp
4+++ b/src/libCom/osi/os/posix/epicsAtomicOSD.cpp
5@@ -48,8 +48,10 @@ void epicsAtomicLock ( EpicsAtomicLockKey * )
6 status = pthread_mutex_lock ( & mutex );
7 if ( status == 0 ) return;
8 assert ( status == EINTR );
9- static const useconds_t retryDelayUSec = 100000;
10- usleep ( retryDelayUSec );
11+ struct timespec retryDelay = { 0, 100000000 };
12+ struct timespec remainingDelay;
13+ while (nanosleep(&retryDelay, &remainingDelay) == -1 && errno == EINTR)
14+ retryDelay = remainingDelay;
15 countDown--;
16 assert ( countDown );
17 }

Subscribers

People subscribed via source and target branches