libCom: actually use libComAPI.h in libCom

This commit is contained in:
Michael Davidsaver
2020-05-20 14:47:51 -07:00
parent b2750bbe93
commit 799e72b1e3
250 changed files with 1286 additions and 1434 deletions
+13 -14
View File
@@ -20,7 +20,6 @@
#include <stddef.h>
#include <stdio.h>
#define epicsExportSharedSymbols
#include "epicsSpin.h"
#include "dbDefs.h"
#include "epicsRingBytes.h"
@@ -42,7 +41,7 @@ typedef struct ringPvt {
volatile char buffer[1]; /* actually larger */
}ringPvt;
epicsShareFunc epicsRingBytesId epicsShareAPI epicsRingBytesCreate(int size)
LIBCOM_API epicsRingBytesId epicsStdCall epicsRingBytesCreate(int size)
{
ringPvt *pring = malloc(sizeof(ringPvt) + size + SLOP);
if(!pring)
@@ -55,7 +54,7 @@ epicsShareFunc epicsRingBytesId epicsShareAPI epicsRingBytesCreate(int size)
return((void *)pring);
}
epicsShareFunc epicsRingBytesId epicsShareAPI epicsRingBytesLockedCreate(int size)
LIBCOM_API epicsRingBytesId epicsStdCall epicsRingBytesLockedCreate(int size)
{
ringPvt *pring = (ringPvt *)epicsRingBytesCreate(size);
if(!pring)
@@ -64,14 +63,14 @@ epicsShareFunc epicsRingBytesId epicsShareAPI epicsRingBytesLockedCreate(int si
return((void *)pring);
}
epicsShareFunc void epicsShareAPI epicsRingBytesDelete(epicsRingBytesId id)
LIBCOM_API void epicsStdCall epicsRingBytesDelete(epicsRingBytesId id)
{
ringPvt *pring = (ringPvt *)id;
if (pring->lock) epicsSpinDestroy(pring->lock);
free((void *)pring);
}
epicsShareFunc int epicsShareAPI epicsRingBytesGet(
LIBCOM_API int epicsStdCall epicsRingBytesGet(
epicsRingBytesId id, char *value,int nbytes)
{
ringPvt *pring = (ringPvt *)id;
@@ -115,7 +114,7 @@ epicsShareFunc int epicsShareAPI epicsRingBytesGet(
return nbytes;
}
epicsShareFunc int epicsShareAPI epicsRingBytesPut(
LIBCOM_API int epicsStdCall epicsRingBytesPut(
epicsRingBytesId id, char *value,int nbytes)
{
ringPvt *pring = (ringPvt *)id;
@@ -167,7 +166,7 @@ epicsShareFunc int epicsShareAPI epicsRingBytesPut(
return nbytes;
}
epicsShareFunc void epicsShareAPI epicsRingBytesFlush(epicsRingBytesId id)
LIBCOM_API void epicsStdCall epicsRingBytesFlush(epicsRingBytesId id)
{
ringPvt *pring = (ringPvt *)id;
@@ -176,7 +175,7 @@ epicsShareFunc void epicsShareAPI epicsRingBytesFlush(epicsRingBytesId id)
if (pring->lock) epicsSpinUnlock(pring->lock);
}
epicsShareFunc int epicsShareAPI epicsRingBytesFreeBytes(epicsRingBytesId id)
LIBCOM_API int epicsStdCall epicsRingBytesFreeBytes(epicsRingBytesId id)
{
ringPvt *pring = (ringPvt *)id;
int nextGet, nextPut;
@@ -192,7 +191,7 @@ epicsShareFunc int epicsShareAPI epicsRingBytesFreeBytes(epicsRingBytesId id)
return pring->size - nextPut + nextGet - SLOP;
}
epicsShareFunc int epicsShareAPI epicsRingBytesUsedBytes(epicsRingBytesId id)
LIBCOM_API int epicsStdCall epicsRingBytesUsedBytes(epicsRingBytesId id)
{
ringPvt *pring = (ringPvt *)id;
int nextGet, nextPut;
@@ -209,14 +208,14 @@ epicsShareFunc int epicsShareAPI epicsRingBytesUsedBytes(epicsRingBytesId id)
return used;
}
epicsShareFunc int epicsShareAPI epicsRingBytesSize(epicsRingBytesId id)
LIBCOM_API int epicsStdCall epicsRingBytesSize(epicsRingBytesId id)
{
ringPvt *pring = (ringPvt *)id;
return pring->size - SLOP;
}
epicsShareFunc int epicsShareAPI epicsRingBytesIsEmpty(epicsRingBytesId id)
LIBCOM_API int epicsStdCall epicsRingBytesIsEmpty(epicsRingBytesId id)
{
ringPvt *pring = (ringPvt *)id;
int isEmpty;
@@ -228,18 +227,18 @@ epicsShareFunc int epicsShareAPI epicsRingBytesIsEmpty(epicsRingBytesId id)
return isEmpty;
}
epicsShareFunc int epicsShareAPI epicsRingBytesIsFull(epicsRingBytesId id)
LIBCOM_API int epicsStdCall epicsRingBytesIsFull(epicsRingBytesId id)
{
return (epicsRingBytesFreeBytes(id) <= 0);
}
epicsShareFunc int epicsShareAPI epicsRingBytesHighWaterMark(epicsRingBytesIdConst id)
LIBCOM_API int epicsStdCall epicsRingBytesHighWaterMark(epicsRingBytesIdConst id)
{
ringPvt *pring = (ringPvt *)id;
return pring->highWaterMark;
}
epicsShareFunc void epicsShareAPI epicsRingBytesResetHighWaterMark(epicsRingBytesId id)
LIBCOM_API void epicsStdCall epicsRingBytesResetHighWaterMark(epicsRingBytesId id)
{
ringPvt *pring = (ringPvt *)id;
int used;
+14 -14
View File
@@ -31,7 +31,7 @@
extern "C" {
#endif
#include "shareLib.h"
#include "libComAPI.h"
/** \brief An identifier for a ring buffer */
typedef void *epicsRingBytesId;
@@ -42,18 +42,18 @@ typedef void const *epicsRingBytesIdConst;
* \param nbytes Size of ring buffer to create
* \return Ring buffer Id or NULL on failure
*/
epicsShareFunc epicsRingBytesId epicsShareAPI epicsRingBytesCreate(int nbytes);
LIBCOM_API epicsRingBytesId epicsStdCall epicsRingBytesCreate(int nbytes);
/**
* \brief Create a new ring buffer, secured by a spinlock
* \param nbytes Size of ring buffer to create
* \return Ring buffer Id or NULL on failure
*/
epicsShareFunc epicsRingBytesId epicsShareAPI epicsRingBytesLockedCreate(int nbytes);
LIBCOM_API epicsRingBytesId epicsStdCall epicsRingBytesLockedCreate(int nbytes);
/**
* \brief Delete the ring buffer and free any associated memory
* \param id RingbufferID returned by epicsRingBytesCreate()
*/
epicsShareFunc void epicsShareAPI epicsRingBytesDelete(epicsRingBytesId id);
LIBCOM_API void epicsStdCall epicsRingBytesDelete(epicsRingBytesId id);
/**
* \brief Read data out of the ring buffer
* \param id RingbufferID returned by epicsRingBytesCreate()
@@ -61,7 +61,7 @@ epicsShareFunc void epicsShareAPI epicsRingBytesDelete(epicsRingBytesId id);
* \param nbytes Maximum number of bytes to get
* \return The number of bytes actually fetched
*/
epicsShareFunc int epicsShareAPI epicsRingBytesGet(
LIBCOM_API int epicsStdCall epicsRingBytesGet(
epicsRingBytesId id, char *value,int nbytes);
/**
* \brief Write data into the ring buffer
@@ -70,45 +70,45 @@ epicsShareFunc int epicsShareAPI epicsRingBytesGet(
* \param nbytes How many bytes to put
* \return The number of bytes actually stored, zero if not enough space
*/
epicsShareFunc int epicsShareAPI epicsRingBytesPut(
LIBCOM_API int epicsStdCall epicsRingBytesPut(
epicsRingBytesId id, char *value,int nbytes);
/**
* \brief Make the ring buffer empty
* \param id RingbufferID returned by epicsRingBytesCreate()
* \note Should only be used when both gets and puts are locked out.
*/
epicsShareFunc void epicsShareAPI epicsRingBytesFlush(epicsRingBytesId id);
LIBCOM_API void epicsStdCall epicsRingBytesFlush(epicsRingBytesId id);
/**
* \brief Return the number of free bytes in the ring buffer
* \param id RingbufferID returned by epicsRingBytesCreate()
* \return The number of free bytes in the ring buffer
*/
epicsShareFunc int epicsShareAPI epicsRingBytesFreeBytes(epicsRingBytesId id);
LIBCOM_API int epicsStdCall epicsRingBytesFreeBytes(epicsRingBytesId id);
/**
* \brief Return the number of bytes currently stored in the ring buffer
* \param id RingbufferID returned by epicsRingBytesCreate()
* \return The number of bytes currently stored in the ring buffer
*/
epicsShareFunc int epicsShareAPI epicsRingBytesUsedBytes(epicsRingBytesId id);
LIBCOM_API int epicsStdCall epicsRingBytesUsedBytes(epicsRingBytesId id);
/**
* \brief Return the size of the ring buffer
* \param id RingbufferID returned by epicsRingBytesCreate()
* \return Return the size of the ring buffer, i.e., nbytes specified in
* the call to epicsRingBytesCreate().
*/
epicsShareFunc int epicsShareAPI epicsRingBytesSize(epicsRingBytesId id);
LIBCOM_API int epicsStdCall epicsRingBytesSize(epicsRingBytesId id);
/**
* \brief Test if the ring buffer is currently empty.
* \param id RingbufferID returned by epicsRingBytesCreate()
* \return 1 if the buffer is empty, otherwise 0
*/
epicsShareFunc int epicsShareAPI epicsRingBytesIsEmpty(epicsRingBytesId id);
LIBCOM_API int epicsStdCall epicsRingBytesIsEmpty(epicsRingBytesId id);
/**
* \brief Test if the ring buffer is currently full.
* \param id RingbufferID returned by epicsRingBytesCreate()
* \return 1 if the buffer is full, otherwise 0
*/
epicsShareFunc int epicsShareAPI epicsRingBytesIsFull(epicsRingBytesId id);
LIBCOM_API int epicsStdCall epicsRingBytesIsFull(epicsRingBytesId id);
/**
* \brief See how full a ring buffer has been since it was last checked.
*
@@ -118,14 +118,14 @@ epicsShareFunc int epicsShareAPI epicsRingBytesIsFull(epicsRingBytesId id);
* \param id RingbufferID returned by epicsRingBytesCreate()
* \return Actual Highwater mark
*/
epicsShareFunc int epicsShareAPI epicsRingBytesHighWaterMark(epicsRingBytesIdConst id);
LIBCOM_API int epicsStdCall epicsRingBytesHighWaterMark(epicsRingBytesIdConst id);
/**
* \brief Reset the Highwater mark of the ring buffer.
*
* The Highwater mark will be set to the current usage
* \param id RingbufferID returned by epicsRingBytesCreate()
*/
epicsShareFunc void epicsShareAPI epicsRingBytesResetHighWaterMark(epicsRingBytesId id);
LIBCOM_API void epicsStdCall epicsRingBytesResetHighWaterMark(epicsRingBytesId id);
#ifdef __cplusplus
}
+13 -14
View File
@@ -20,84 +20,83 @@
#include <stddef.h>
#include <stdio.h>
#define epicsExportSharedSymbols
#include "epicsRingPointer.h"
typedef epicsRingPointer<void> voidPointer;
epicsShareFunc epicsRingPointerId epicsShareAPI epicsRingPointerCreate(int size)
LIBCOM_API epicsRingPointerId epicsStdCall epicsRingPointerCreate(int size)
{
voidPointer *pvoidPointer = new voidPointer(size, false);
return(reinterpret_cast<void *>(pvoidPointer));
}
epicsShareFunc epicsRingPointerId epicsShareAPI epicsRingPointerLockedCreate(int size)
LIBCOM_API epicsRingPointerId epicsStdCall epicsRingPointerLockedCreate(int size)
{
voidPointer *pvoidPointer = new voidPointer(size, true);
return(reinterpret_cast<void *>(pvoidPointer));
}
epicsShareFunc void epicsShareAPI epicsRingPointerDelete(epicsRingPointerId id)
LIBCOM_API void epicsStdCall epicsRingPointerDelete(epicsRingPointerId id)
{
voidPointer *pvoidPointer = reinterpret_cast<voidPointer*>(id);
delete pvoidPointer;
}
epicsShareFunc void* epicsShareAPI epicsRingPointerPop(epicsRingPointerId id)
LIBCOM_API void* epicsStdCall epicsRingPointerPop(epicsRingPointerId id)
{
voidPointer *pvoidPointer = reinterpret_cast<voidPointer*>(id);
return pvoidPointer->pop();
}
epicsShareFunc int epicsShareAPI epicsRingPointerPush(epicsRingPointerId id, void *p)
LIBCOM_API int epicsStdCall epicsRingPointerPush(epicsRingPointerId id, void *p)
{
voidPointer *pvoidPointer = reinterpret_cast<voidPointer*>(id);
return((pvoidPointer->push(p) ? 1 : 0));
}
epicsShareFunc void epicsShareAPI epicsRingPointerFlush(epicsRingPointerId id)
LIBCOM_API void epicsStdCall epicsRingPointerFlush(epicsRingPointerId id)
{
voidPointer *pvoidPointer = reinterpret_cast<voidPointer*>(id);
pvoidPointer->flush();
}
epicsShareFunc int epicsShareAPI epicsRingPointerGetFree(epicsRingPointerId id)
LIBCOM_API int epicsStdCall epicsRingPointerGetFree(epicsRingPointerId id)
{
voidPointer *pvoidPointer = reinterpret_cast<voidPointer*>(id);
return(pvoidPointer->getFree());
}
epicsShareFunc int epicsShareAPI epicsRingPointerGetUsed(epicsRingPointerId id)
LIBCOM_API int epicsStdCall epicsRingPointerGetUsed(epicsRingPointerId id)
{
voidPointer *pvoidPointer = reinterpret_cast<voidPointer*>(id);
return(pvoidPointer->getUsed());
}
epicsShareFunc int epicsShareAPI epicsRingPointerGetSize(epicsRingPointerId id)
LIBCOM_API int epicsStdCall epicsRingPointerGetSize(epicsRingPointerId id)
{
voidPointer *pvoidPointer = reinterpret_cast<voidPointer*>(id);
return(pvoidPointer->getSize());
}
epicsShareFunc int epicsShareAPI epicsRingPointerIsEmpty(epicsRingPointerId id)
LIBCOM_API int epicsStdCall epicsRingPointerIsEmpty(epicsRingPointerId id)
{
voidPointer *pvoidPointer = reinterpret_cast<voidPointer*>(id);
return((pvoidPointer->isEmpty()) ? 1 : 0);
}
epicsShareFunc int epicsShareAPI epicsRingPointerIsFull(epicsRingPointerId id)
LIBCOM_API int epicsStdCall epicsRingPointerIsFull(epicsRingPointerId id)
{
voidPointer *pvoidPointer = reinterpret_cast<voidPointer*>(id);
return((pvoidPointer->isFull()) ? 1 : 0);
}
epicsShareFunc int epicsShareAPI epicsRingPointerGetHighWaterMark(epicsRingPointerIdConst id)
LIBCOM_API int epicsStdCall epicsRingPointerGetHighWaterMark(epicsRingPointerIdConst id)
{
voidPointer const *pvoidPointer = reinterpret_cast<voidPointer const*>(id);
return(pvoidPointer->getHighWaterMark());
}
epicsShareFunc void epicsShareAPI epicsRingPointerResetHighWaterMark(epicsRingPointerId id)
LIBCOM_API void epicsStdCall epicsRingPointerResetHighWaterMark(epicsRingPointerId id)
{
voidPointer *pvoidPointer = reinterpret_cast<voidPointer*>(id);
pvoidPointer->resetHighWaterMark();
+14 -14
View File
@@ -29,7 +29,7 @@
#include "epicsSpin.h"
#include "shareLib.h"
#include "libComAPI.h"
#ifdef __cplusplus
/**
@@ -122,69 +122,69 @@ typedef void const *epicsRingPointerIdConst;
* \param size Size of ring buffer to create
* \return Ring buffer identifier or NULL on failure
*/
epicsShareFunc epicsRingPointerId epicsShareAPI epicsRingPointerCreate(int size);
LIBCOM_API epicsRingPointerId epicsStdCall epicsRingPointerCreate(int size);
/**
* \brief Create a new ring buffer, secured by a spinlock
* \param size Size of ring buffer to create
* \return Ring buffer identifier or NULL on failure
*/
epicsShareFunc epicsRingPointerId epicsShareAPI epicsRingPointerLockedCreate(int size);
LIBCOM_API epicsRingPointerId epicsStdCall epicsRingPointerLockedCreate(int size);
/**
* \brief Delete the ring buffer and free any associated memory
* \param id Ring buffer identifier
*/
epicsShareFunc void epicsShareAPI epicsRingPointerDelete(epicsRingPointerId id);
LIBCOM_API void epicsStdCall epicsRingPointerDelete(epicsRingPointerId id);
/**
* \brief Push pointer into the ring buffer
* \param id Ring buffer identifier
* \param p Pointer to be pushed to the ring
* \return 1 if the pointer was successfully pushed, 0 if the buffer was full
*/
epicsShareFunc int epicsShareAPI epicsRingPointerPush(epicsRingPointerId id,void *p);
LIBCOM_API int epicsStdCall epicsRingPointerPush(epicsRingPointerId id,void *p);
/**
* \brief Take an element off the ring
* \param id Ring buffer identifier
* \return The pointer from the buffer, or NULL if the ring was empty
*/
epicsShareFunc void* epicsShareAPI epicsRingPointerPop(epicsRingPointerId id) ;
LIBCOM_API void* epicsStdCall epicsRingPointerPop(epicsRingPointerId id) ;
/**
* \brief Remove all elements from the ring
* \param id Ring buffer identifier
* \note If this operation is performed on a ring buffer of the unsecured
* kind, all access to the ring should be locked.
*/
epicsShareFunc void epicsShareAPI epicsRingPointerFlush(epicsRingPointerId id);
LIBCOM_API void epicsStdCall epicsRingPointerFlush(epicsRingPointerId id);
/**
* \brief Return the amount of empty space in the ring buffer
* \param id Ring buffer identifier
* \return The number of additional elements it could hold.
*/
epicsShareFunc int epicsShareAPI epicsRingPointerGetFree(epicsRingPointerId id);
LIBCOM_API int epicsStdCall epicsRingPointerGetFree(epicsRingPointerId id);
/**
* \brief Return the number of elements stored in the ring buffer
* \param id Ring buffer identifier
* \return The number of elements stored in the ring buffer
*/
epicsShareFunc int epicsShareAPI epicsRingPointerGetUsed(epicsRingPointerId id);
LIBCOM_API int epicsStdCall epicsRingPointerGetUsed(epicsRingPointerId id);
/**
* \brief Return the size of the ring
* \param id Ring buffer identifier
* \return The size of the ring buffer, i.e. the value of \c size
* given when the ring was created.
*/
epicsShareFunc int epicsShareAPI epicsRingPointerGetSize(epicsRingPointerId id);
LIBCOM_API int epicsStdCall epicsRingPointerGetSize(epicsRingPointerId id);
/**
* \brief Check if the ring buffer is currently empty
* \param id Ring buffer identifier
* \return 1 if the ring is empty, otherwise 0
*/
epicsShareFunc int epicsShareAPI epicsRingPointerIsEmpty(epicsRingPointerId id);
LIBCOM_API int epicsStdCall epicsRingPointerIsEmpty(epicsRingPointerId id);
/**
* \brief Check if the ring buffer is currently full
* \param id Ring buffer identifier
* \return 1 if the ring buffer is full, otherwise 0
*/
epicsShareFunc int epicsShareAPI epicsRingPointerIsFull(epicsRingPointerId id);
LIBCOM_API int epicsStdCall epicsRingPointerIsFull(epicsRingPointerId id);
/**
* \brief Get the Highwater mark of the ring buffer
*
@@ -194,14 +194,14 @@ epicsShareFunc int epicsShareAPI epicsRingPointerIsFull(epicsRingPointerId id);
* \param id Ring buffer identifier
* \return Actual Highwater mark
*/
epicsShareFunc int epicsShareAPI epicsRingPointerGetHighWaterMark(epicsRingPointerIdConst id);
LIBCOM_API int epicsStdCall epicsRingPointerGetHighWaterMark(epicsRingPointerIdConst id);
/**
* \brief Reset the Highwater mark of the ring buffer
*
* The Highwater mark will be set to the current usage
* \param id Ring buffer identifier
*/
epicsShareFunc void epicsShareAPI epicsRingPointerResetHighWaterMark(epicsRingPointerId id);
LIBCOM_API void epicsStdCall epicsRingPointerResetHighWaterMark(epicsRingPointerId id);
/* This routine was incorrectly named in previous releases */
#define epicsRingPointerSize epicsRingPointerGetSize