Don't do necessary stuff inside assert().
This commit is contained in:
@@ -54,7 +54,10 @@ epicsShareFunc void epicsShareAPI epicsEventDestroy(epicsEventId id);
|
||||
epicsShareFunc void epicsShareAPI epicsEventSignal(epicsEventId id);
|
||||
epicsShareFunc epicsEventWaitStatus epicsShareAPI epicsEventWait(
|
||||
epicsEventId id);
|
||||
#define epicsEventMustWait(ID) assert((epicsEventWait ((ID))==epicsEventWaitOK))
|
||||
#define epicsEventMustWait(ID) { \
|
||||
epicsEventWaitStatus status = epicsEventWait(ID); \
|
||||
assert(status == epicsEventWaitOK); \
|
||||
}
|
||||
epicsShareFunc epicsEventWaitStatus epicsShareAPI epicsEventWaitWithTimeout(
|
||||
epicsEventId id, double timeOut);
|
||||
epicsShareFunc epicsEventWaitStatus epicsShareAPI epicsEventTryWait(
|
||||
|
||||
@@ -72,7 +72,10 @@ epicsShareFunc void epicsShareAPI epicsMutexDestroy(epicsMutexId id);
|
||||
epicsShareFunc void epicsShareAPI epicsMutexUnlock(epicsMutexId id);
|
||||
epicsShareFunc epicsMutexLockStatus epicsShareAPI epicsMutexLock(
|
||||
epicsMutexId id);
|
||||
#define epicsMutexMustLock(ID) assert((epicsMutexLock((ID))==epicsMutexLockOK))
|
||||
#define epicsMutexMustLock(ID) { \
|
||||
epicsMutexLockStatus status = epicsMutexLock(ID); \
|
||||
assert(status == epicsMutexLockOK); \
|
||||
}
|
||||
epicsShareFunc epicsMutexLockStatus epicsShareAPI epicsMutexTryLock(
|
||||
epicsMutexId id);
|
||||
epicsShareFunc void epicsShareAPI epicsMutexShow(
|
||||
|
||||
@@ -112,13 +112,16 @@ unsigned int epicsThreadGetStackSize (epicsThreadStackSizeClass stackSizeClass)
|
||||
|
||||
void epicsThreadOnceOsd(epicsThreadOnceId *id, void (*func)(void *), void *arg)
|
||||
{
|
||||
int result;
|
||||
epicsThreadInit();
|
||||
assert(semTake(epicsThreadOnceMutex,WAIT_FOREVER)==OK);
|
||||
result = semTake(epicsThreadOnceMutex, WAIT_FOREVER);
|
||||
assert(result == OK);
|
||||
if (*id == 0) { /* 0 => first call */
|
||||
*id = -1; /* -1 => func() active */
|
||||
semGive(epicsThreadOnceMutex);
|
||||
func(arg);
|
||||
assert(semTake(epicsThreadOnceMutex,WAIT_FOREVER)==OK);
|
||||
result = semTake(epicsThreadOnceMutex, WAIT_FOREVER);
|
||||
assert(result == OK);
|
||||
*id = +1; /* +1 => func() done */
|
||||
} else
|
||||
assert(*id > 0 /* func() called epicsThreadOnce() with same id */);
|
||||
|
||||
Reference in New Issue
Block a user