epicsMutexMustCreate now osi; add support for epicsSemShowAll

This commit is contained in:
Marty Kraimer
2001-04-05 14:36:00 +00:00
parent 857c4a9545
commit 4e9f6b716a
5 changed files with 30 additions and 71 deletions

View File

@@ -1,6 +1,7 @@
#ifndef epicsMutexh
#define epicsMutexh
#include <stdarg.h>
#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

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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);
}