diff --git a/src/libCom/osi/epicsMutex.h b/src/libCom/osi/epicsMutex.h index 12c032acb..37a1e1e06 100644 --- a/src/libCom/osi/epicsMutex.h +++ b/src/libCom/osi/epicsMutex.h @@ -1,6 +1,7 @@ #ifndef epicsMutexh #define epicsMutexh +#include #include "epicsAssert.h" #include "shareLib.h" @@ -59,9 +60,16 @@ private: #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ +/* The following should NOT be called by user code*/ +epicsShareFunc epicsMutexId epicsShareAPI epicsMutexOsdCreate(void); +epicsShareFunc void epicsShareAPI epicsMutexOsdDestroy(epicsMutexId id); +epicsShareFunc epicsMutexId epicsShareAPI epicsMutexOsiCreate( + const char *pFileName,int lineno); +epicsShareFunc epicsMutexId epicsShareAPI epicsMutexOsiMustCreate( + const char *pFileName,int lineno); -epicsShareFunc epicsMutexId epicsShareAPI epicsMutexCreate(void); -epicsShareFunc epicsMutexId epicsShareAPI epicsMutexMustCreate (void); +#define epicsMutexCreate() epicsMutexOsiCreate(__FILE__,__LINE__) +#define epicsMutexMustCreate() epicsMutexOsiMustCreate(__FILE__,__LINE__) epicsShareFunc void epicsShareAPI epicsMutexDestroy(epicsMutexId id); epicsShareFunc void epicsShareAPI epicsMutexUnlock(epicsMutexId id); epicsShareFunc epicsMutexLockStatus epicsShareAPI epicsMutexLock( @@ -73,6 +81,8 @@ epicsShareFunc epicsMutexLockStatus epicsShareAPI epicsMutexTryLock( epicsMutexId id); epicsShareFunc void epicsShareAPI epicsMutexShow( epicsMutexId id,unsigned int level); +epicsShareFunc void epicsShareAPI epicsMutexShowAll( + int onlyLocked,unsigned int level); /*NOTES: epicsMutex MUST implement recursive locking diff --git a/src/libCom/osi/os/RTEMS/osdMutex.c b/src/libCom/osi/os/RTEMS/osdMutex.c index 364d55e9c..edda8e9bd 100644 --- a/src/libCom/osi/os/RTEMS/osdMutex.c +++ b/src/libCom/osi/os/RTEMS/osdMutex.c @@ -34,7 +34,7 @@ unsigned long semStat[6]; #endif epicsMutexId -epicsMutexCreate(void) +epicsMutexOsdCreate(void) { rtems_status_code sc; rtems_id sid; @@ -86,14 +86,7 @@ epicsMutexCreate(void) return (epicsMutexId)sid; } -epicsMutexId epicsMutexMustCreate(void) -{ - epicsMutexId id = epicsMutexCreate (); - assert (id); - return id; -} - -void epicsMutexDestroy(epicsMutexId id) +void epicsMutexOsdDestroy(epicsMutexId id) { rtems_status_code sc; rtems_id sid; diff --git a/src/libCom/osi/os/WIN32/osdMutex.c b/src/libCom/osi/os/WIN32/osdMutex.c index db0afe2be..b1f6cbba2 100644 --- a/src/libCom/osi/os/WIN32/osdMutex.c +++ b/src/libCom/osi/os/WIN32/osdMutex.c @@ -57,9 +57,9 @@ typedef struct mutexSem { /* - * epicsMutexCreate () + * epicsMutexOsdCreate () */ -epicsShareFunc epicsMutexId epicsShareAPI epicsMutexCreate (void) +epicsShareFunc epicsMutexId epicsShareAPI epicsMutexOsdCreate (void) { mutexSem *pSem; @@ -76,19 +76,9 @@ epicsShareFunc epicsMutexId epicsShareAPI epicsMutexCreate (void) } /* - * epicsMutexMustCreate () + * epicsMutexOsdDestroy () */ -epicsShareFunc epicsMutexId epicsShareAPI epicsMutexMustCreate () -{ - epicsMutexId id = epicsMutexCreate (); - assert (id); - return id; -} - -/* - * epicsMutexDestroy () - */ -epicsShareFunc void epicsShareAPI epicsMutexDestroy (epicsMutexId id) +epicsShareFunc void epicsShareAPI epicsMutexOsdDestroy (epicsMutexId id) { mutexSem *pSem = (mutexSem *) id; @@ -196,19 +186,9 @@ epicsShareFunc epicsMutexId epicsShareAPI epicsMutexCreate ( void ) } /* - * epicsMutexMustCreate () + * epicsMutexOsdDestroy () */ -epicsShareFunc semBinaryId epicsShareAPI epicsMutexMustCreate () -{ - epicsMutexId id = epicsMutexCreate (); - assert ( id ); - return id; -} - -/* - * epicsMutexDestroy () - */ -epicsShareFunc void epicsShareAPI epicsMutexDestroy ( epicsMutexId id ) +epicsShareFunc void epicsShareAPI epicsMutexOsdDestroy ( epicsMutexId id ) { mutexSem *pSem = ( mutexSem * ) id; @@ -299,19 +279,9 @@ epicsShareFunc epicsMutexId epicsShareAPI epicsMutexCreate ( void ) } /* - * epicsMutexMustCreate () + * epicsMutexOsdDestroy () */ -epicsShareFunc epicsMutexId epicsShareAPI epicsMutexMustCreate () -{ - epicsMutexId id = epicsMutexCreate (); - assert ( id ); - return id; -} - -/* - * epicsMutexDestroy () - */ -epicsShareFunc void epicsShareAPI epicsMutexDestroy ( epicsMutexId id ) +epicsShareFunc void epicsShareAPI epicsMutexOsdDestroy ( epicsMutexId id ) { mutexSem *pSem = ( mutexSem * ) id; diff --git a/src/libCom/osi/os/posix/osdMutex.c b/src/libCom/osi/os/posix/osdMutex.c index c5db878a4..69054d2de 100644 --- a/src/libCom/osi/os/posix/osdMutex.c +++ b/src/libCom/osi/os/posix/osdMutex.c @@ -68,20 +68,20 @@ static void convertDoubleToWakeTime(double timeout,struct timespec *wakeTime) } } -epicsMutexId epicsMutexCreate(void) { +epicsMutexId epicsMutexOsdCreate(void) { mutex *pmutex; int status; - pmutex = callocMustSucceed(1,sizeof(mutex),"epicsMutexCreate"); + pmutex = callocMustSucceed(1,sizeof(mutex),"epicsMutexOsdCreate"); status = pthread_mutexattr_init(&pmutex->mutexAttr); - checkStatusQuit(status,"pthread_mutexattr_init","epicsMutexCreate"); + checkStatusQuit(status,"pthread_mutexattr_init","epicsMutexOsdCreate"); #if defined _POSIX_THREAD_PRIO_INHERIT status = pthread_mutexattr_setprotocol( &pmutex->mutexAttr,PTHREAD_PRIO_INHERIT); if(errVerbose) checkStatus(status,"pthread_mutexattr_setprotocal"); #endif /*_POSIX_THREAD_PRIO_INHERIT*/ status = pthread_mutex_init(&pmutex->lock,&pmutex->mutexAttr); - checkStatusQuit(status,"pthread_mutex_init","epicsMutexCreate"); + checkStatusQuit(status,"pthread_mutex_init","epicsMutexOsdCreate"); #if defined _POSIX_THREAD_PROCESS_SHARED status = pthread_condattr_init(&pmutex->condAttr); checkStatus(status,"pthread_condattr_init"); @@ -92,18 +92,11 @@ epicsMutexId epicsMutexCreate(void) { #else status = pthread_cond_init(&pmutex->waitToBeOwner,0); #endif /*_POSIX_THREAD_PROCESS_SHARED*/ - checkStatusQuit(status,"pthread_cond_init","epicsMutexCreate"); + checkStatusQuit(status,"pthread_cond_init","epicsMutexOsdCreate"); return((epicsMutexId)pmutex); } -epicsMutexId epicsMutexMustCreate(void) -{ - epicsMutexId id = epicsMutexCreate (); - assert (id); - return id; -} - -void epicsMutexDestroy(epicsMutexId id) +void epicsMutexOsdDestroy(epicsMutexId id) { mutex *pmutex = (mutex *)id; int status; diff --git a/src/libCom/osi/os/vxWorks/osdMutex.c b/src/libCom/osi/os/vxWorks/osdMutex.c index f8e6c9249..e1e2828c3 100644 --- a/src/libCom/osi/os/vxWorks/osdMutex.c +++ b/src/libCom/osi/os/vxWorks/osdMutex.c @@ -19,20 +19,13 @@ int sysClkRateGet(void); #include "epicsMutex.h" -epicsMutexId epicsMutexCreate(void) +epicsMutexId epicsMutexOsdCreate(void) { return((epicsMutexId) semMCreate(SEM_DELETE_SAFE|SEM_INVERSION_SAFE|SEM_Q_PRIORITY)); } -epicsMutexId epicsMutexMustCreate(void) -{ - epicsMutexId id = epicsMutexCreate (); - assert (id); - return id; -} - -void epicsMutexDestroy(epicsMutexId id) +void epicsMutexOsdDestroy(epicsMutexId id) { semDelete((SEM_ID)id); }