"must" functions are now inline and also OSI

This commit is contained in:
Jeff Hill
2000-01-25 01:31:49 +00:00
parent ac891fde6a
commit 4302eb2145

View File

@@ -1,6 +1,8 @@
#ifndef osiSemh
#define osiSemh
#include <assert.h>
#ifdef __cplusplus
extern "C" {
#endif
@@ -12,32 +14,58 @@ typedef enum {semTakeOK,semTakeTimeout,semTakeError} semTakeStatus;
typedef enum {semEmpty,semFull} semInitialState;
epicsShareFunc semId epicsShareAPI semBinaryCreate(int initialState);
epicsShareFunc semId epicsShareAPI semBinaryMustCreate(int initialState);
static INLINE semId semBinaryMustCreate (int initialState);
epicsShareFunc void epicsShareAPI semBinaryDestroy(semId id);
epicsShareFunc void epicsShareAPI semBinaryGive(semId id);
epicsShareFunc semTakeStatus epicsShareAPI semBinaryTake(semId id);
epicsShareFunc void epicsShareAPI semBinaryMustTake(semId id);
static INLINE void semBinaryMustTake (semId id);
epicsShareFunc semTakeStatus epicsShareAPI semBinaryTakeTimeout(semId id, double timeOut);
epicsShareFunc semTakeStatus epicsShareAPI semBinaryTakeNoWait(semId id);
epicsShareFunc void epicsShareAPI semBinaryShow(semId id);
epicsShareFunc semId epicsShareAPI semMutexCreate(void);
epicsShareFunc semId epicsShareAPI semMutexMustCreate(void);
static INLINE semId semMutexMustCreate (void);
epicsShareFunc void epicsShareAPI semMutexDestroy(semId id);
epicsShareFunc void epicsShareAPI semMutexGive(semId id);
epicsShareFunc semTakeStatus epicsShareAPI semMutexTake(semId id);
epicsShareFunc void epicsShareAPI semMutexMustTake(semId id);
static INLINE void semMutexMustTake(semId id);
epicsShareFunc semTakeStatus epicsShareAPI semMutexTakeTimeout(semId id, double timeOut);
epicsShareFunc semTakeStatus epicsShareAPI semMutexTakeNoWait(semId id);
epicsShareFunc void epicsShareAPI semMutexShow(semId id);
#ifdef __cplusplus
}
#endif
/*NOTES:
Mutex semaphores MUST implement recursive locking
Mutex semaphores should implement priority inheritance and deletion safe
*/
static INLINE semId semBinaryMustCreate (int initialState)
{
semId id = semBinaryCreate (initialState);
assert (id);
return id;
}
static INLINE void semBinaryMustTake (semId id)
{
assert (semBinaryTake (id)==semTakeOK);
}
static INLINE semId semMutexMustCreate (void)
{
semId id = semMutexCreate ();
assert (id);
return id;
}
static INLINE void semMutexMustTake(semId id)
{
assert (semMutexTake (id)==semTakeOK);
}
#ifdef __cplusplus
}
#endif
#endif /* osiSemh */