Don't do necessary stuff inside assert().

This commit is contained in:
Andrew Johnson
2009-01-06 17:07:56 +00:00
parent bf3c47c3d3
commit f14e6df788
3 changed files with 13 additions and 4 deletions
+4 -1
View File
@@ -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(
+4 -1
View File
@@ -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(
+5 -2
View File
@@ -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 */);