46 #include "libComAPI.h"
54 epicsMutexLockTimeout,
61 #include "epicsGuard.h"
65 #define newEpicsMutex new epicsMutex(__FILE__,__LINE__)
73 class mutexCreateFailed;
76 #if !defined(__GNUC__) || __GNUC__<4 || (__GNUC__==4 && __GNUC_MINOR__<8)
87 epicsMutex (
const char *pFileName,
int lineno );
93 epicsMutex (
const char *pFileName = __builtin_FILE(),
int lineno = __builtin_LINE() );
106 void show (
unsigned level )
const;
143 typedef unsigned hierarchyLevel_t;
146 void show (
unsigned level )
const;
152 const hierarchyLevel_t hierarchyLevel;
169 #define epicsMutexCreate() epicsMutexOsiCreate(__FILE__,__LINE__)
172 const char *pFileName,
int lineno);
180 #define epicsMutexMustCreate() epicsMutexOsiMustCreate(__FILE__,__LINE__)
183 const char *pFileName,
int lineno);
215 #define epicsMutexMustLock(ID) { \
216 epicsMutexLockStatus status = epicsMutexLock(ID); \
217 assert(status == epicsMutexLockOK); \
248 int onlyLocked,
unsigned int level);
255 struct epicsMutexOSD * epicsMutexOsdCreate(
void);
256 void epicsMutexOsdDestroy(
struct epicsMutexOSD *);
257 void epicsMutexOsdUnlock(
struct epicsMutexOSD *);
260 void epicsMutexOsdShow(
struct epicsMutexOSD *,
unsigned int level);
261 #ifdef EPICS_PRIVATE_API
262 void epicsMutexOsdShowAll(
void);
269 #include "osdMutex.h"
LIBCOM_API epicsMutexLockStatus epicsStdCall epicsMutexLock(epicsMutexId id)
Claim the semaphore, waiting until it's free if currently owned owned by a different thread...
LIBCOM_API epicsMutexId epicsStdCall epicsMutexOsiCreate(const char *pFileName, int lineno)
Internal API, used by epicsMutexCreate().
LIBCOM_API void epicsStdCall epicsMutexUnlock(epicsMutexId id)
Release the semaphore.
LIBCOM_API void epicsStdCall epicsMutexDestroy(epicsMutexId id)
Destroy an epicsMutex semaphore.
An EPICS-specific replacement for ANSI C's assert.
Compiler specific declarations.
LIBCOM_API epicsMutexLockStatus epicsStdCall epicsMutexTryLock(epicsMutexId id)
Similar to epicsMutexLock() except that the call returns immediately, with the return status indicati...
LIBCOM_API epicsMutexId epicsStdCall epicsMutexOsiMustCreate(const char *pFileName, int lineno)
Internal API, used by epicsMutexMustCreate().
The C++ API for an epicsMutex.
A semaphore for locating deadlocks in C++ code.
LIBCOM_API void epicsStdCall epicsMutexShowAll(int onlyLocked, unsigned int level)
Display information about all epicsMutex semaphores.
LIBCOM_API void epicsStdCall epicsMutexShow(epicsMutexId id, unsigned int level)
Display information about the semaphore.
struct epicsMutexParm * epicsMutexId
An identifier for an epicsMutex for use with the C API.