From 734eab20ccf766315d2d9b03dd14429ef06616e6 Mon Sep 17 00:00:00 2001 From: Marty Kraimer Date: Fri, 28 Jan 2000 20:04:16 +0000 Subject: [PATCH] dont implement via header file --- src/libCom/osi/os/vxWorks/osdInterrupt.c | 19 +++- src/libCom/osi/os/vxWorks/osdInterrupt.h | 10 --- src/libCom/osi/os/vxWorks/osdRing.c | 54 +++++++++++- src/libCom/osi/os/vxWorks/osdRing.h | 20 ----- src/libCom/osi/os/vxWorks/osdSem.c | 106 ++++++++++++++++++++--- src/libCom/osi/os/vxWorks/osdSem.h | 53 ------------ src/libCom/osi/os/vxWorks/osdTime.h | 13 --- 7 files changed, 161 insertions(+), 114 deletions(-) delete mode 100644 src/libCom/osi/os/vxWorks/osdInterrupt.h delete mode 100644 src/libCom/osi/os/vxWorks/osdRing.h delete mode 100644 src/libCom/osi/os/vxWorks/osdSem.h delete mode 100644 src/libCom/osi/os/vxWorks/osdTime.h diff --git a/src/libCom/osi/os/vxWorks/osdInterrupt.c b/src/libCom/osi/os/vxWorks/osdInterrupt.c index 8a7132dc8..ca47f1856 100644 --- a/src/libCom/osi/os/vxWorks/osdInterrupt.c +++ b/src/libCom/osi/os/vxWorks/osdInterrupt.c @@ -1,6 +1,6 @@ /* osi/os/vxWorks/osiInterrupt.c */ -/* Author: Marty Kraimer Date: 25AUG99 */ +/* Author: Marty Kraimer Date: 28JAN2000 */ /********************COPYRIGHT NOTIFICATION********************************** This software was developed under a United States Government license @@ -8,9 +8,20 @@ described on the COPYRIGHT_UniversityOfChicago file included as part of this distribution. ****************************************************************************/ -/* Entire implementation is in header file */ +#include +#include +#include -static void dummy() +#include "osiInterrupt.h" + + +int interruptLock() {return(intLock();} + +void interruptUnlock(int key) {intUnlock(key;} + +int interruptIsInterruptContext() {return(intContext());} + +void interruptContextMessage(const char *message) { + logMsg((char *)message,0,0,0,0,0,0); } - diff --git a/src/libCom/osi/os/vxWorks/osdInterrupt.h b/src/libCom/osi/os/vxWorks/osdInterrupt.h deleted file mode 100644 index b92efba85..000000000 --- a/src/libCom/osi/os/vxWorks/osdInterrupt.h +++ /dev/null @@ -1,10 +0,0 @@ -#include -#include -#include - - -#define interruptLock intLock -#define interruptUnlock intUnlock -#define interruptIsInterruptContext intContext -#define interruptContextMessage(MESSAGE) \ - (logMsg((char *)(MESSAGE),0,0,0,0,0,0)) diff --git a/src/libCom/osi/os/vxWorks/osdRing.c b/src/libCom/osi/os/vxWorks/osdRing.c index 3ecd1acbb..3845ebf35 100644 --- a/src/libCom/osi/os/vxWorks/osdRing.c +++ b/src/libCom/osi/os/vxWorks/osdRing.c @@ -8,7 +8,55 @@ described on the COPYRIGHT_UniversityOfChicago file included as part of this distribution. ****************************************************************************/ -/* Entire implementation is in header file */ +#include +#include -static void dummy() -{ } +ringId ringCreate(int nbytes) +{ + return((ringId)rngCreate(nbytes)); +} + +void ringDelete(ringId id) +{ + rngDelete((RING_ID)id); +} + +int ringGet(ringId id, char *value,int nbytes) +{ + return(rngBufGet((RING_ID)id,value,nbytes); +} + +int ringPut(ringId id, char *value,int nbytes) +{ + return(rngBufPut((RING_ID)id,value,nbytes)); +} + +void ringFlush(ringId id) +{ + ringFlush((RING_ID)id); +} + +int ringFreeBytes(ringId id) +{ + return(rngFreeBytes((RING_ID)id)); +} + +int ringUsedBytes(ringId id) +{ + return(rngNBytes((RING_ID)id)); +} + +int ringSize(ringId id) +{ + return((rngFreeBytes((RING_ID)id) + rngNBytes((RING_ID)id))); +} + +int ringIsEmpty(ringId id) +{ + return(rngIsEmpty((RING_ID)id)); +} + +int ringIsFull(ringId id) +{ + return(rngIsFull((RING_ID)id)); +} diff --git a/src/libCom/osi/os/vxWorks/osdRing.h b/src/libCom/osi/os/vxWorks/osdRing.h deleted file mode 100644 index da85f4e1a..000000000 --- a/src/libCom/osi/os/vxWorks/osdRing.h +++ /dev/null @@ -1,20 +0,0 @@ -#ifndef osiRingh -#define osiRingh - -#include -#include - -#define ringId RING_ID - -#define ringCreate rngCreate -#define ringDelete rngDelete -#define ringGet rngBufGet -#define ringPut rngBufPut -#define ringFlush rngFlush -#define ringFreeBytes rngFreeBytes -#define ringUsedBytes rngNBytes -#define ringSize(ID) (rngFreeBytes((ID)) + rngNBytes((ID))) -#define ringIsEmpty rngIsEmpty -#define ringIsFull rngIsFull - -#endif /* osiRingh */ diff --git a/src/libCom/osi/os/vxWorks/osdSem.c b/src/libCom/osi/os/vxWorks/osdSem.c index 08767c180..0f1195c4a 100644 --- a/src/libCom/osi/os/vxWorks/osdSem.c +++ b/src/libCom/osi/os/vxWorks/osdSem.c @@ -8,22 +8,106 @@ described on the COPYRIGHT_UniversityOfChicago file included as part of this distribution. ****************************************************************************/ +#include +#include +#include +#include +#include + #include "osiSem.h" #include "cantProceed.h" - -semBinaryId semBinaryMustCreate(int initialState) +semBinaryId semBinaryCreate(int initialState) { - semBinaryId id; - id = semBinaryCreate(initialState); - if(!id) cantProceed("semBinaryMustCreate"); - return(id); + return((semBinaryId)semBCreate(SEM_Q_FIFO,(semEmpty ? SEM_EMPTY : SEM_FULL))); } -semMutexId semMutexMustCreate(void) +void semBinaryDestroy(semBinaryId id) { - semMutexId id; - id = semMutexCreate(); - if(!id) cantProceed("semMutexMustCreate"); - return(id); + semDelete((SEM_ID)id); +} + +void semBinaryGive(semBinaryId id) +{ + semGive((SEM_ID)id); +} + +semTakeStatus semBinaryTake(semBinaryId id) +{ + int status; + status = semTake((SEM_ID)id,WAIT_FOREVER); + return((status==OK ? semTakeOK : semTakeError)); +} + +semTakeStatus semBinaryTakeTimeout( + semBinaryId id, double timeOut) +{ + int status; + int ticks; + ticks = (int)(timeOut * (double)sysClkRateGet()); + status = semTake((SEM_ID)id,ticks); + if(status==OK) return(semTakeOK); + if(errno==S_objLib_OBJ_TIMEOUT) return(semTakeTimeout); + return(semTakeError); +} + +semTakeStatus semBinaryTakeNoWait(semBinaryId id) +{ + int status; + status = semTake((SEM_ID)id,NO_WAIT); + if(status==OK) return(semTakeOK); + if(errno==S_objLib_OBJ_UNAVAILABLE) return(semTakeTimeout); + return(semTakeError); +} + +void semBinaryShow(semBinaryId id) +{ + semShow((SEM_ID)id,1); +} + +semMutexId semMutexCreate(void) +{ + return((semMutexId) + semMCreate(SEM_DELETE_SAFE|SEM_INVERSION_SAFE|SEM_Q_PRIORITY)); +} + +void semMutexDestroy(semMutexId id) +{ + semDelete((SEM_ID)id); +} + +void semMutexGive(semMutexId id) +{ + semGive((SEM_ID)id); +} + +semTakeStatus semMutexTake(semMutexId id) +{ + int status; + status = semTake((SEM_ID)id,WAIT_FOREVER); + return((status==OK ? semTakeOK : semTakeError)); +} + +semTakeStatus semMutexTakeTimeout( + semMutexId id, double timeOut) +{ + int status; + status = semTake((SEM_ID)id,NO_WAIT); + if(status==OK) return(semTakeOK); + if(errno==S_objLib_OBJ_UNAVAILABLE) return(semTakeTimeout); + return(semTakeError); +} + +semTakeStatus semMutexTakeNoWait(semMutexId id); +{ + int status; + status = semTake((SEM_ID)id,NO_WAIT); + if(status==OK) return(semTakeOK); + if(errno==S_objLib_OBJ_UNAVAILABLE) return(semTakeTimeout); + return(semTakeError); +} + +void semMutexShow(semMutexId id); +{ + semShow((SEM_ID)id,1); } diff --git a/src/libCom/osi/os/vxWorks/osdSem.h b/src/libCom/osi/os/vxWorks/osdSem.h deleted file mode 100644 index 633d7257f..000000000 --- a/src/libCom/osi/os/vxWorks/osdSem.h +++ /dev/null @@ -1,53 +0,0 @@ -#ifndef osiSemh -#define osiSemh - -#include -#include -#include -#include -#include - -#include "epicsAssert.h" - -#define semBinaryId SEM_ID -#define semMutexId SEM_ID -#define semEmpty SEM_EMPTY -#define semFull SEM_FULL - -typedef enum {semTakeOK,semTakeTimeout,semTakeError} semTakeStatus; - -#define semBinaryCreate(IS) semBCreate(SEM_Q_FIFO,(IS)) -semBinaryId semBinaryMustCreate(int initialState); -#define semBinaryDestroy semDelete -#define semBinaryGive semGive -#define semBinaryTake(ID) \ - ((semTake((ID),WAIT_FOREVER)==OK ? semTakeOK : semTakeError)) -#define semBinaryMustTake(ID) \ - assert(semTake((ID),WAIT_FOREVER)==OK) -#define semBinaryTakeTimeout(ID,TIMEOUT) \ - ((semTake((ID),((int)((TIMEOUT)*sysClkRateGet())))==OK ? semTakeOK \ - : (errno==S_objLib_OBJ_TIMEOUT ? semTakeTimeout : semTakeError))) -#define semBinaryTakeNoWait(ID) \ - ((semTake((ID),NO_WAIT)==OK ? semTakeOK \ - : (errno==S_objLib_OBJ_UNAVAILABLE ? semTakeTimeout : semTakeError))) - -#define semBinaryShow(ID) semShow((ID),1) - -#define semMutexCreate() \ - semMCreate(SEM_DELETE_SAFE|SEM_INVERSION_SAFE|SEM_Q_PRIORITY) -semMutexId semMutexMustCreate(); -#define semMutexDestroy semDelete -#define semMutexGive semGive -#define semMutexTake(ID) \ - ((semTake((ID),WAIT_FOREVER)==OK ? semTakeOK : semTakeError)) -#define semMutexMustTake(ID) \ - assert(semTake((ID),WAIT_FOREVER)==OK) -#define semMutexTakeTimeout(ID,TIMEOUT) \ - ((semTake((ID),((int)((TIMEOUT)*sysClkRateGet())))==OK ? semTakeOK \ - : (errno==S_objLib_OBJ_TIMEOUT ? semTakeTimeout : semTakeError))) -#define semMutexTakeNoWait(ID) \ - ((semTake((ID),NO_WAIT)==OK ? semTakeOK \ - : (errno==S_objLib_OBJ_UNAVAILABLE ? semTakeTimeout : semTakeError))) -#define semMutexShow(ID) semShow((ID),1) - -#endif /*osiSemh*/ diff --git a/src/libCom/osi/os/vxWorks/osdTime.h b/src/libCom/osi/os/vxWorks/osdTime.h deleted file mode 100644 index d2674e177..000000000 --- a/src/libCom/osi/os/vxWorks/osdTime.h +++ /dev/null @@ -1,13 +0,0 @@ - -/* - * $Id$ - * - * Author: Jeff Hill - */ - -#ifndef osdTimeh -#define osdTimeh - -/* NOOP */ - -#endif /* ifndef osdTimeh */ \ No newline at end of file