osi => epics name change to accomodate aps

This commit is contained in:
Jeff Hill
2001-01-12 00:24:12 +00:00
parent 4f09be744f
commit ad5db9a914
10 changed files with 95 additions and 94 deletions
+6 -6
View File
@@ -44,7 +44,7 @@
#include "tsFreeList.h"
#include "tsDLList.h"
#include "osiSock.h"
#include "osiSem.h"
#include "epicsEvent.h"
#include "osiThread.h"
#include "osiTimer.h"
#include "epicsMutex.h"
@@ -611,7 +611,7 @@ private:
char recvBuf [MAX_UDP_RECV];
ELLLIST dest;
threadId recvThreadId;
semBinaryId recvThreadExitSignal;
epicsEventId recvThreadExitSignal;
unsigned nBytesInXmitBuf;
SOCKET sock;
unsigned short repeaterPort;
@@ -773,10 +773,10 @@ private:
void *pCurData;
unsigned minorProtocolVersion;
iiu_conn_state state;
semBinaryId sendThreadFlushSignal;
semBinaryId recvThreadRingBufferSpaceAvailableSignal;
semBinaryId sendThreadExitSignal;
semBinaryId recvThreadExitSignal;
epicsEventId sendThreadFlushSignal;
epicsEventId recvThreadRingBufferSpaceAvailableSignal;
epicsEventId sendThreadExitSignal;
epicsEventId recvThreadExitSignal;
SOCKET sock;
unsigned contigRecvMsgCount;
bool fullyConstructedFlag;
+36 -36
View File
@@ -98,7 +98,7 @@ extern "C" void cacSendThreadTCP ( void *pParam )
while ( true ) {
semBinaryMustTake ( piiu->sendThreadFlushSignal );
epicsEventMustWait ( piiu->sendThreadFlushSignal );
if ( piiu->state != iiu_connected ) {
break;
@@ -160,7 +160,7 @@ extern "C" void cacSendThreadTCP ( void *pParam )
}
}
semBinaryGive ( piiu->sendThreadExitSignal );
epicsEventSignal ( piiu->sendThreadExitSignal );
}
unsigned tcpiiu::sendBytes ( const void *pBuf,
@@ -313,15 +313,15 @@ extern "C" void cacRecvThreadTCP ( void *pParam )
tid = threadCreate ( "CAC-TCP-send", priorityOfSend,
threadGetStackSize ( threadStackMedium ), cacSendThreadTCP, piiu );
if ( ! tid ) {
semBinaryGive ( piiu->recvThreadExitSignal );
semBinaryGive ( piiu->sendThreadExitSignal );
epicsEventSignal ( piiu->recvThreadExitSignal );
epicsEventSignal ( piiu->sendThreadExitSignal );
piiu->cleanShutdown ();
return;
}
}
else {
semBinaryGive ( piiu->recvThreadExitSignal );
semBinaryGive ( piiu->sendThreadExitSignal );
epicsEventSignal ( piiu->recvThreadExitSignal );
epicsEventSignal ( piiu->sendThreadExitSignal );
piiu->cleanShutdown ();
return;
}
@@ -334,7 +334,7 @@ extern "C" void cacRecvThreadTCP ( void *pParam )
nBytes = piiu->recvQue.occupiedBytes ();
}
if ( nBytes >= 0x4000 ) {
semBinaryMustTake ( piiu->recvThreadRingBufferSpaceAvailableSignal );
epicsEventMustWait ( piiu->recvThreadRingBufferSpaceAvailableSignal );
}
else {
comBuf * pComBuf = new comBuf;
@@ -358,7 +358,7 @@ extern "C" void cacRecvThreadTCP ( void *pParam )
}
}
semBinaryGive ( piiu->recvThreadExitSignal );
epicsEventSignal ( piiu->recvThreadExitSignal );
}
//
@@ -387,34 +387,34 @@ tcpiiu::tcpiiu ( cac &cac, double connectionTimeout, osiTimerQueue &timerQueue )
{
this->addr.sa.sa_family = AF_UNSPEC;
this->sendThreadExitSignal = semBinaryCreate (semEmpty);
this->sendThreadExitSignal = epicsEventCreate ( epicsEventEmpty );
if ( ! this->sendThreadExitSignal ) {
ca_printf ("CA: unable to create CA client send thread exit semaphore\n");
this->fullyConstructedFlag = false;
return;
}
this->recvThreadExitSignal = semBinaryCreate (semEmpty);
this->recvThreadExitSignal = epicsEventCreate ( epicsEventEmpty );
if ( ! this->recvThreadExitSignal ) {
ca_printf ("CA: unable to create CA client send thread exit semaphore\n");
semBinaryDestroy (this->sendThreadExitSignal);
epicsEventDestroy (this->sendThreadExitSignal);
this->fullyConstructedFlag = false;
return;
}
this->sendThreadFlushSignal = semBinaryCreate ( semEmpty );
this->sendThreadFlushSignal = epicsEventCreate ( epicsEventEmpty );
if ( ! this->sendThreadFlushSignal ) {
ca_printf ("CA: unable to create sendThreadFlushSignal object\n");
semBinaryDestroy (this->sendThreadExitSignal);
epicsEventDestroy (this->sendThreadExitSignal);
this->fullyConstructedFlag = false;
return;
}
this->recvThreadRingBufferSpaceAvailableSignal = semBinaryCreate ( semEmpty );
this->recvThreadRingBufferSpaceAvailableSignal = epicsEventCreate ( epicsEventEmpty );
if ( ! this->recvThreadRingBufferSpaceAvailableSignal ) {
ca_printf ("CA: unable to create recvThreadRingBufferSpaceAvailableSignal object\n");
semBinaryDestroy (this->sendThreadExitSignal);
semBinaryDestroy (this->sendThreadFlushSignal);
epicsEventDestroy (this->sendThreadExitSignal);
epicsEventDestroy (this->sendThreadFlushSignal);
this->fullyConstructedFlag = false;
return;
}
@@ -622,8 +622,8 @@ void tcpiiu::cleanShutdown ()
this->state = iiu_disconnected;
}
}
semBinaryGive ( this->sendThreadFlushSignal );
semBinaryGive ( this->recvThreadRingBufferSpaceAvailableSignal );
epicsEventSignal ( this->sendThreadFlushSignal );
epicsEventSignal ( this->recvThreadRingBufferSpaceAvailableSignal );
this->pCAC ()->signalRecvActivity ();
}
@@ -661,8 +661,8 @@ void tcpiiu::forcedShutdown ()
}
}
semBinaryGive ( this->sendThreadFlushSignal );
semBinaryGive ( this->recvThreadRingBufferSpaceAvailableSignal );
epicsEventSignal ( this->sendThreadFlushSignal );
epicsEventSignal ( this->recvThreadRingBufferSpaceAvailableSignal );
this->pCAC ()->signalRecvActivity ();
}
@@ -679,13 +679,13 @@ void tcpiiu::disconnect ()
// wait for send thread to exit
static const double shutdownDelay = 15.0;
semTakeStatus semStat;
epicsEventWaitStatus semStat;
while ( true ) {
semStat = semBinaryTakeTimeout ( this->sendThreadExitSignal, shutdownDelay );
if ( semStat == semTakeOK ) {
semStat = epicsEventWaitWithTimeout ( this->sendThreadExitSignal, shutdownDelay );
if ( semStat == epicsEventWaitOK ) {
break;
}
assert ( semStat == semTakeTimeout );
assert ( semStat == epicsEventWaitTimeout );
if ( ! this->sockCloseCompleted ) {
printf ( "Gave up waiting for \"shutdown()\" to force send thread to exit after %f sec\n",
shutdownDelay);
@@ -703,11 +703,11 @@ void tcpiiu::disconnect ()
// wait for recv thread to exit
while ( true ) {
semStat = semBinaryTakeTimeout ( this->recvThreadExitSignal, shutdownDelay );
if ( semStat == semTakeOK ) {
semStat = epicsEventWaitWithTimeout ( this->recvThreadExitSignal, shutdownDelay );
if ( semStat == epicsEventWaitOK ) {
break;
}
assert ( semStat == semTakeTimeout );
assert ( semStat == epicsEventWaitTimeout );
if ( ! this->sockCloseCompleted ) {
printf ( "Gave up waiting for \"shutdown()\" to force receive thread to exit after %f sec\n",
shutdownDelay);
@@ -769,10 +769,10 @@ tcpiiu::~tcpiiu ()
return;
}
semBinaryDestroy ( this->sendThreadExitSignal );
semBinaryDestroy ( this->recvThreadExitSignal );
semBinaryDestroy ( this->sendThreadFlushSignal );
semBinaryDestroy ( this->recvThreadRingBufferSpaceAvailableSignal );
epicsEventDestroy ( this->sendThreadExitSignal );
epicsEventDestroy ( this->recvThreadExitSignal );
epicsEventDestroy ( this->sendThreadFlushSignal );
epicsEventDestroy ( this->recvThreadRingBufferSpaceAvailableSignal );
if ( this->pHostNameCache ) {
this->pHostNameCache->destroy ();
@@ -855,13 +855,13 @@ void tcpiiu::show ( unsigned level ) const
if ( level > 3u ) {
printf ( "\tvirtual circuit socket identifier %d\n", this->sock );
printf ( "\tsend thread flush signal:\n" );
semBinaryShow ( this->sendThreadFlushSignal, level-3u );
epicsEventShow ( this->sendThreadFlushSignal, level-3u );
printf ( "\trecv thread buffer space available signal:\n" );
semBinaryShow ( this->recvThreadRingBufferSpaceAvailableSignal, level-3u );
epicsEventShow ( this->recvThreadRingBufferSpaceAvailableSignal, level-3u );
printf ( "\tsend thread exit signal:\n" );
semBinaryShow ( this->sendThreadExitSignal, level-3u );
epicsEventShow ( this->sendThreadExitSignal, level-3u );
printf ( "\trecv thread exit signal:\n" );
semBinaryShow ( this->recvThreadExitSignal, level-3u );
epicsEventShow ( this->recvThreadExitSignal, level-3u );
printf ( "\tfully constructed bool %u\n", this->fullyConstructedFlag );
printf ("\techo pending bool = %u\n", this->echoRequestPending );
printf ("\tflush pending bool = %u\n", this->flushPending );
@@ -1376,7 +1376,7 @@ void tcpiiu::processIncoming ()
}
}
semBinaryGive ( this->recvThreadRingBufferSpaceAvailableSignal );
epicsEventSignal ( this->recvThreadRingBufferSpaceAvailableSignal );
}
/*
+1 -1
View File
@@ -51,7 +51,7 @@ inline void tcpiiu::flush ()
epicsAutoMutex autoMutex ( this->mutex );
this->flushPending = true;
}
semBinaryGive ( this->sendThreadFlushSignal );
epicsEventSignal ( this->sendThreadFlushSignal );
}
inline bool tcpiiu::ca_v44_ok () const
+6 -6
View File
@@ -125,7 +125,7 @@ extern "C" void cacRecvThreadUDP (void *pParam)
piiu->recvMsg ();
} while ( ! piiu->shutdownCmd );
semBinaryGive ( piiu->recvThreadExitSignal );
epicsEventSignal ( piiu->recvThreadExitSignal );
}
/*
@@ -395,7 +395,7 @@ udpiiu::udpiiu ( cac &cac ) :
this->nBytesInXmitBuf = 0u;
this->recvThreadExitSignal = semBinaryCreate ( semEmpty );
this->recvThreadExitSignal = epicsEventMustCreate ( epicsEventEmpty );
if ( ! this->recvThreadExitSignal ) {
socket_close ( this->sock );
throwWithLocation ( noMemory () );
@@ -425,7 +425,7 @@ udpiiu::udpiiu ( cac &cac ) :
threadGetStackSize (threadStackMedium), cacRecvThreadUDP, this );
if ( this->recvThreadId == 0 ) {
ca_printf ("CA: unable to create UDP receive thread\n");
semBinaryDestroy (this->recvThreadExitSignal);
epicsEventDestroy (this->recvThreadExitSignal);
socket_close (this->sock);
throwWithLocation ( noMemory () );
}
@@ -442,7 +442,7 @@ udpiiu::~udpiiu ()
// closes the udp socket and waits for its recv thread to exit
this->shutdown ();
semBinaryDestroy ( this->recvThreadExitSignal );
epicsEventDestroy ( this->recvThreadExitSignal );
ellFree ( &this->dest );
@@ -510,7 +510,7 @@ void udpiiu::shutdown ()
}
}
// wait for recv threads to exit
semBinaryMustTake ( this->recvThreadExitSignal );
epicsEventMustWait ( this->recvThreadExitSignal );
}
}
@@ -846,7 +846,7 @@ void udpiiu::show ( unsigned level ) const
printf ("\tbytes in xmit buffer %u\n", this->nBytesInXmitBuf );
printf ("\tshut down command bool %u\n", this->shutdownCmd );
printf ( "\trecv thread exit signal:\n" );
semBinaryShow ( this->recvThreadExitSignal, level-3u );
epicsEventShow ( this->recvThreadExitSignal, level-3u );
}
}
+38 -38
View File
@@ -44,7 +44,8 @@
#define epicsExportSharedSymbols
#include "dbDefs.h"
#include "osiSem.h"
#include "epicsEvent.h"
#include "epicsMutex.h"
#include "osiThread.h"
#include "osiSock.h"
#include "epicsAssert.h"
@@ -70,15 +71,15 @@ typedef struct {
ELLNODE node; /* must be the first field in struct */
struct sockaddr_in addr;
FILE *file;
semMutexId mutex;
epicsMutexId mutex;
SOCKET sock;
unsigned connectTries;
unsigned connectCount;
unsigned connectReset;
}logClient;
LOCAL semMutexId logClientGlobalMutex;
LOCAL semBinaryId logClientGlobalSignal;
LOCAL epicsMutexId logClientGlobalMutex;
LOCAL epicsEventId logClientGlobalSignal;
LOCAL ELLLIST logClientList;
LOCAL threadId logClientThreadId;
LOCAL logClient *pLogClientDefaultClient;
@@ -141,7 +142,7 @@ LOCAL void logClientReset (logClient *pClient)
/*
* mutex on
*/
semMutexMustTake (pClient->mutex);
epicsMutexMustLock (pClient->mutex);
/*
* close any preexisting connection to the log server
@@ -168,12 +169,12 @@ LOCAL void logClientReset (logClient *pClient)
/*
* mutex off
*/
semMutexGive (pClient->mutex);
epicsMutexUnlock (pClient->mutex);
/*
* wake up the watchdog task
*/
semBinaryGive (logClientGlobalSignal);
epicsEventSignal (logClientGlobalSignal);
# ifdef DEBUG
fprintf (stderr, "done\n");
@@ -189,11 +190,11 @@ LOCAL void logClientDestroy (logClient *pClient)
/*
* mutex on (and left on)
*/
semMutexMustTake (pClient->mutex);
epicsMutexMustLock (pClient->mutex);
logClientReset (pClient);
semMutexDestroy (pClient->mutex);
epicsMutexDestroy (pClient->mutex);
free (pClient);
}
@@ -212,11 +213,11 @@ LOCAL void logClientShutdown (void)
*/
# ifndef vxWorks
logClient *pClient;
semMutexMustTake (logClientGlobalMutex);
epicsMutexMustLock (logClientGlobalMutex);
while ( ( pClient = (logClient *) ellGet (&logClientList) ) ) {
logClientDestroy (pClient);
}
semMutexGive (logClientGlobalMutex);
epicsMutexUnlock (logClientGlobalMutex);
# endif
}
@@ -235,7 +236,7 @@ LOCAL void logClientSendMessageInternal (logClientId id, const char *message)
/*
* mutex on
*/
semMutexMustTake (pClient->mutex);
epicsMutexMustLock (pClient->mutex);
if (pClient->file) {
status = fprintf (pClient->file, "%s", message);
@@ -252,7 +253,7 @@ LOCAL void logClientSendMessageInternal (logClientId id, const char *message)
/*
* mutex off
*/
semMutexGive (pClient->mutex);
epicsMutexUnlock (pClient->mutex);
return;
}
@@ -277,7 +278,7 @@ LOCAL void logClientMakeSock (logClient *pClient)
fprintf (stderr, "log client: creating socket...");
# endif
semMutexMustTake (pClient->mutex);
epicsMutexMustLock (pClient->mutex);
/*
* allocate a socket
@@ -286,7 +287,7 @@ LOCAL void logClientMakeSock (logClient *pClient)
if (pClient->sock == INVALID_SOCKET){
fprintf (stderr, "log client: no socket error %s\n",
SOCKERRSTR(SOCKERRNO));
semMutexGive (pClient->mutex);
epicsMutexUnlock (pClient->mutex);
return;
}
@@ -297,11 +298,11 @@ LOCAL void logClientMakeSock (logClient *pClient)
__FILE__, __LINE__, SOCKERRSTR(SOCKERRNO));
socket_close (pClient->sock);
pClient->sock = INVALID_SOCKET;
semMutexGive (pClient->mutex);
epicsMutexUnlock (pClient->mutex);
return;
}
semMutexGive (pClient->mutex);
epicsMutexUnlock (pClient->mutex);
# ifdef DEBUG
fprintf (stderr, "done\n");
@@ -436,9 +437,9 @@ LOCAL void logClientConnect (logClient *pClient)
*/
LOCAL void logRestart (void *pPrivate)
{
semTakeStatus semStatus;
logClient *pClient;
unsigned ioPending;
epicsEventWaitStatus semStatus;
logClient *pClient;
unsigned ioPending;
/*
* roll the local port forward so that we dont collide
@@ -451,10 +452,10 @@ LOCAL void logRestart (void *pPrivate)
while (1) {
ioPending = 0;
semStatus = semBinaryTakeTimeout (logClientGlobalSignal, LOG_RESTART_DELAY);
assert ( semStatus==semTakeOK || semStatus==semTakeTimeout );
semStatus = epicsEventWaitWithTimeout (logClientGlobalSignal, LOG_RESTART_DELAY);
assert ( semStatus==epicsEventWaitOK || semStatus==epicsEventWaitTimeout );
semMutexMustTake (logClientGlobalMutex);
epicsMutexMustLock (logClientGlobalMutex);
for ( pClient = (logClient *) ellFirst (&logClientList); pClient;
pClient = (logClient *) ellNext(&pClient->node) ) {
@@ -485,7 +486,7 @@ LOCAL void logRestart (void *pPrivate)
logClientReset (pClient);
}
}
semMutexGive (logClientGlobalMutex);
epicsMutexUnlock (logClientGlobalMutex);
}
}
@@ -496,29 +497,28 @@ LOCAL void logClientGlobalInit ()
{
static const unsigned logRestartStackSize = 0x2000;
logClientGlobalMutex = semMutexCreate ();
logClientGlobalMutex = epicsMutexCreate ();
if (!logClientGlobalMutex) {
fprintf(stderr, "log client: Unable to create log client global mutex\n");
return;
}
semMutexMustTake (logClientGlobalMutex);
epicsMutexMustLock (logClientGlobalMutex);
ellInit (&logClientList);
logClientGlobalSignal = semBinaryCreate (0);
logClientGlobalSignal = epicsEventCreate (0);
if(!logClientGlobalSignal){
semMutexDestroy (logClientGlobalMutex);
epicsMutexDestroy (logClientGlobalMutex);
logClientGlobalMutex = NULL;
return;
}
logClientThreadId = threadCreate ("logRestart", threadPriorityLow,
logRestartStackSize, logRestart, 0);
if (logClientThreadId==NULL) {
semMutexDestroy (logClientGlobalMutex);
epicsMutexDestroy (logClientGlobalMutex);
logClientGlobalMutex = NULL;
semMutexDestroy (logClientGlobalSignal);
epicsMutexDestroy (logClientGlobalSignal);
logClientGlobalSignal = NULL;
fprintf(stderr, "log client: unable to start log client connection watch dog thread\n");
return;
@@ -535,7 +535,7 @@ LOCAL void logClientGlobalInit ()
# else
atexit (logClientShutdown);
# endif
semMutexGive (logClientGlobalMutex);
epicsMutexUnlock (logClientGlobalMutex);
}
/*
@@ -570,7 +570,7 @@ epicsShareFunc logClientId epicsShareAPI logClientInit ()
return NULL;
}
pClient->mutex = semMutexCreate ();
pClient->mutex = epicsMutexCreate ();
if (!pClient->mutex) {
free (pClient);
return NULL;
@@ -579,16 +579,16 @@ epicsShareFunc logClientId epicsShareAPI logClientInit ()
pClient->sock = INVALID_SOCKET;
pClient->file = NULL;
semMutexMustTake (logClientGlobalMutex);
epicsMutexMustLock (logClientGlobalMutex);
ellAdd (&logClientList, &pClient->node);
semMutexGive (logClientGlobalMutex);
epicsMutexUnlock (logClientGlobalMutex);
/*
* attempt to block for the connect
*/
while (pClient->file==NULL) {
semBinaryGive (logClientGlobalSignal);
epicsEventSignal (logClientGlobalSignal);
threadSleep (50e-3);
@@ -596,9 +596,9 @@ epicsShareFunc logClientId epicsShareAPI logClientInit ()
if (connectTries>=maxConnectTries) {
char name[64];
semMutexMustTake (logClientGlobalMutex);
epicsMutexMustLock (logClientGlobalMutex);
ipAddrToDottedIP (&pClient->addr, name, sizeof(name));
semMutexGive (logClientGlobalMutex);
epicsMutexUnlock (logClientGlobalMutex);
break;
}
+5 -5
View File
@@ -37,7 +37,7 @@
#define epicsExportSharedSymbols
#include "osiThread.h"
#include "osiSem.h"
#include "epicsEvent.h"
#include "osiSock.h"
#include "epicsAssert.h"
#include "errlog.h"
@@ -45,21 +45,21 @@
/*
* Protect some routines which are not thread-safe
*/
static semMutexId infoMutex;
static epicsMutexId infoMutex;
static void createInfoMutex (void *unused)
{
infoMutex = semMutexMustCreate ();
infoMutex = epicsMutexMustCreate ();
}
static void lockInfo (void)
{
static threadOnceId infoMutexOnceFlag = OSITHREAD_ONCE_INIT;
threadOnce (&infoMutexOnceFlag, createInfoMutex, NULL);
semMutexMustTake (infoMutex);
epicsMutexMustLock (infoMutex);
}
static void unlockInfo (void)
{
semMutexGive (infoMutex);
epicsMutexUnlock (infoMutex);
}
/*
-1
View File
@@ -8,7 +8,6 @@ extern "C" {
#include <stddef.h>
#include "shareLib.h"
#include "osiSem.h"
typedef void (*THREADFUNC)(void *parm);
+1
View File
@@ -19,6 +19,7 @@ of this distribution.
#include "osiThread.h"
#include "epicsRingPointer.h"
#include "errlog.h"
#include "osiSem.h"
#define ringSize 10
+1
View File
@@ -19,6 +19,7 @@ of this distribution.
#include "osiThread.h"
#include "epicsRingPointer.h"
#include "errlog.h"
#include "osiSem.h"
typedef struct info {
+1 -1
View File
@@ -18,7 +18,7 @@ of this distribution.
#include "osiThread.h"
#include "errlog.h"
#include "osiSem.h"
typedef struct info {
int threadnum;