45 #include "libComAPI.h" 64 #define newEpicsMutex new epicsMutex(__FILE__,__LINE__) 72 class mutexCreateFailed;
75 #if !defined(__GNUC__) || __GNUC__<4 || (__GNUC__==4 && __GNUC_MINOR__<8) 92 epicsMutex (
const char *pFileName = __builtin_FILE(),
int lineno = __builtin_LINE() );
105 void show (
unsigned level )
const;
138 class LIBCOM_API epicsDeadlockDetectMutex {
142 typedef unsigned hierarchyLevel_t;
143 epicsDeadlockDetectMutex (
unsigned hierarchyLevel_t );
144 ~epicsDeadlockDetectMutex ();
145 void show (
unsigned level )
const;
151 const hierarchyLevel_t hierarchyLevel;
152 class epicsDeadlockDetectMutex * pPreviousLevel;
153 epicsDeadlockDetectMutex (
const epicsDeadlockDetectMutex & );
154 epicsDeadlockDetectMutex & operator = (
const epicsDeadlockDetectMutex & );
168 #define epicsMutexCreate() epicsMutexOsiCreate(__FILE__,__LINE__) 171 const char *pFileName,
int lineno);
179 #define epicsMutexMustCreate() epicsMutexOsiMustCreate(__FILE__,__LINE__) 182 const char *pFileName,
int lineno);
214 #define epicsMutexMustLock(ID) { \ 215 epicsMutexLockStatus status = epicsMutexLock(ID); \ 216 assert(status == epicsMutexLockOK); \ 237 epicsMutexId
id,
unsigned int level);
247 int onlyLocked,
unsigned int level);
259 void epicsMutexOsdShow(
struct epicsMutexOSD *,
unsigned int level);
265 #include "osdMutex.h"
An EPICS-specific replacement for ANSI C's assert.
LIBCOM_API epicsMutexLockStatus epicsStdCall epicsMutexTryLock(epicsMutexId id)
Similar to epicsMutexLock() except that the call returns immediately, with the return status indicati...
struct epicsMutexParm * epicsMutexId
An identifier for an epicsMutex for use with the C API.
LIBCOM_API void epicsStdCall epicsMutexShow(epicsMutexId id, unsigned int level)
Display information about the semaphore.
LIBCOM_API void epicsStdCall epicsMutexShowAll(int onlyLocked, unsigned int level)
Display information about all epicsMutex semaphores.
LIBCOM_API void epicsStdCall epicsMutexUnlock(epicsMutexId id)
Release the semaphore.
#define epicsMutexOsdUnlock(ID)
#define epicsMutexOsdLock(ID)
LIBCOM_API epicsMutexId epicsStdCall epicsMutexOsiCreate(const char *pFileName, int lineno)
Internal API, used by epicsMutexCreate().
Compiler specific declarations.
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 epicsMutexOsiMustCreate(const char *pFileName, int lineno)
Internal API, used by epicsMutexMustCreate().
LIBCOM_API void epicsStdCall epicsMutexDestroy(epicsMutexId id)
Destroy an epicsMutex semaphore.