diff --git a/src/ca/oldAccess.h b/src/ca/oldAccess.h index cf2b7945a..27b18f6a7 100644 --- a/src/ca/oldAccess.h +++ b/src/ca/oldAccess.h @@ -83,11 +83,11 @@ public: protected: ~oldChannelNotify (); // must allocate from pool private: - cacChannel & io; oldCAC & cacCtx; caCh * pConnCallBack; void * pPrivate; caArh * pAccessRightsFunc; + cacChannel & io; void connectNotify (); void disconnectNotify (); void accessRightsNotify ( const caAccessRights & ); @@ -198,6 +198,15 @@ private: oldSubscription & operator = ( const oldSubscription & ); }; +class oldCACMutex { +public: + void lock (); + void unlock (); + void show ( unsigned level ) const; +private: + epicsMutex mutex; +}; + struct oldCAC : public cacNotify { public: @@ -235,7 +244,7 @@ public: int lineno, const char *pFormat, va_list args ); bool preemptiveCallbakIsEnabled () const; private: - mutable epicsMutex mutex; + mutable oldCACMutex mutex; cac & clientCtx; caExceptionHandler *ca_exception_func; void *ca_exception_arg; @@ -526,4 +535,19 @@ inline bool oldCAC::preemptiveCallbakIsEnabled () const return this->clientCtx.preemptiveCallbakIsEnabled (); } +inline void oldCACMutex::lock () +{ + this->mutex.lock (); +} + +inline void oldCACMutex::unlock () +{ + this->mutex.unlock (); +} + +inline void oldCACMutex::show ( unsigned level ) const +{ + this->mutex.show ( level ); +} + #endif // ifndef oldAccessh diff --git a/src/ca/oldCAC.cpp b/src/ca/oldCAC.cpp index 84cebec18..76c5dd224 100644 --- a/src/ca/oldCAC.cpp +++ b/src/ca/oldCAC.cpp @@ -14,6 +14,10 @@ * 505 665 1831 */ +#ifdef _MSC_VER +# pragma warning(disable:4355) +#endif + #include #define epicsExportSharedSymbols @@ -36,7 +40,7 @@ oldCAC::~oldCAC () void oldCAC::changeExceptionEvent ( caExceptionHandler *pfunc, void *arg ) { - epicsGuard < epicsMutex > autoMutex ( this->mutex ); + epicsGuard < oldCACMutex > autoMutex ( this->mutex ); this->ca_exception_func = pfunc; this->ca_exception_arg = arg; // should block here until releated callback in progress completes @@ -44,7 +48,7 @@ void oldCAC::changeExceptionEvent ( caExceptionHandler *pfunc, void *arg ) void oldCAC::replaceErrLogHandler ( caPrintfFunc *ca_printf_func ) { - epicsGuard < epicsMutex > autoMutex ( this->mutex ); + epicsGuard < oldCACMutex > autoMutex ( this->mutex ); if ( ca_printf_func ) { this->pVPrintfFunc = ca_printf_func; } @@ -56,7 +60,7 @@ void oldCAC::replaceErrLogHandler ( caPrintfFunc *ca_printf_func ) void oldCAC::registerForFileDescriptorCallBack ( CAFDHANDLER *pFunc, void *pArg ) { - epicsGuard < epicsMutex > autoMutex ( this->mutex ); + epicsGuard < oldCACMutex > autoMutex ( this->mutex ); this->fdRegFunc = pFunc; this->fdRegArg = pArg; // should block here until releated callback in progress completes @@ -80,7 +84,7 @@ int oldCAC::vPrintf ( const char *pformat, va_list args ) const // X aCC 361 { caPrintfFunc *pFunc; { - epicsGuard < epicsMutex > autoMutex ( this->mutex ); + epicsGuard < oldCACMutex > autoMutex ( this->mutex ); pFunc = this->pVPrintfFunc; } if ( pFunc ) { @@ -98,7 +102,7 @@ void oldCAC::exception ( int stat, const char *pCtx, caExceptionHandler *pFunc; void *pArg; { - epicsGuard < epicsMutex > autoMutex ( this->mutex ); + epicsGuard < oldCACMutex > autoMutex ( this->mutex ); pFunc = this->ca_exception_func; pArg = this->ca_exception_arg; } @@ -130,7 +134,7 @@ void oldCAC::exception ( int status, const char *pContext, caExceptionHandler *pFunc; void *pArg; { - epicsGuard < epicsMutex > autoMutex ( this->mutex ); + epicsGuard < oldCACMutex > autoMutex ( this->mutex ); pFunc = this->ca_exception_func; pArg = this->ca_exception_arg; } @@ -163,7 +167,7 @@ void oldCAC::fdWasCreated ( int fd ) CAFDHANDLER *pFunc; void *pArg; { - epicsGuard < epicsMutex > autoMutex ( this->mutex ); + epicsGuard < oldCACMutex > autoMutex ( this->mutex ); pFunc = this->fdRegFunc; pArg = this->fdRegArg; } @@ -177,7 +181,7 @@ void oldCAC::fdWasDestroyed ( int fd ) CAFDHANDLER *pFunc; void *pArg; { - epicsGuard < epicsMutex > autoMutex ( this->mutex ); + epicsGuard < oldCACMutex > autoMutex ( this->mutex ); pFunc = this->fdRegFunc; pArg = this->fdRegArg; }