From 1f57197b5f4c20dc6ebacdc85f6a27c3a2b34837 Mon Sep 17 00:00:00 2001 From: William Lupton Date: Wed, 1 Mar 2000 23:14:18 +0000 Subject: [PATCH] threadOnce fix (fixes use of macro) --- src/libCom/osi/os/posix/osdThread.c | 3 ++- src/libCom/osi/osiThread.h | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/libCom/osi/os/posix/osdThread.c b/src/libCom/osi/os/posix/osdThread.c index d9fc5bab8..3fa8e0ba9 100644 --- a/src/libCom/osi/os/posix/osdThread.c +++ b/src/libCom/osi/os/posix/osdThread.c @@ -184,8 +184,9 @@ void threadOnceOsd(threadOnceId *id, void (*func)(void *), void *arg) semMutexMustTake(onceMutex); if (*id == 0) { - *id = 1; + *id = -1; func(arg); + *id = 1; } semMutexGive(onceMutex); } diff --git a/src/libCom/osi/osiThread.h b/src/libCom/osi/osiThread.h index 200870c32..2cd7a5c37 100644 --- a/src/libCom/osi/osiThread.h +++ b/src/libCom/osi/osiThread.h @@ -44,7 +44,7 @@ epicsShareFunc void epicsShareAPI threadOnceOsd( #define threadOnce(id,func,arg) \ do { \ threadOnceId *idCopy =(id); \ - if(*idCopy == 0) \ + if(*idCopy <= 0) \ threadOnceOsd(idCopy,func,arg); \ } while(0)