From 517b60cb16ae6007749426d67254072d5ee6066c Mon Sep 17 00:00:00 2001 From: Jeff Hill Date: Wed, 12 Feb 2003 18:52:30 +0000 Subject: [PATCH] added gdd global lock --- src/gdd/gdd.cc | 11 +++++++++++ src/gdd/gdd.h | 4 ++++ 2 files changed, 15 insertions(+) diff --git a/src/gdd/gdd.cc b/src/gdd/gdd.cc index fed2f61b3..3cf09318e 100644 --- a/src/gdd/gdd.cc +++ b/src/gdd/gdd.cc @@ -26,6 +26,15 @@ gdd_NEWDEL_NEW(gdd) gdd_NEWDEL_DEL(gdd) gdd_NEWDEL_STAT(gdd) +epicsMutex * gdd::pGlobalMutex = 0; +epicsThreadOnceId gdd::staticInitOnce = EPICS_THREAD_ONCE_INIT; + +void gdd::staticInit ( void * ) +{ + gdd::pGlobalMutex = new epicsMutex; + assert ( gdd::pGlobalMutex ); +} + class gddFlattenDestructor : public gddDestructor { public: @@ -85,6 +94,8 @@ gdd::gdd(int app, aitEnum prim, int dimen, aitUint32* val) void gdd::init(int app, aitEnum prim, int dimen) { + epicsThreadOnce ( & gdd::staticInitOnce, gdd::staticInit, 0 ); + setApplType(app); // // joh - we intentionally dont call setPrimType() diff --git a/src/gdd/gdd.h b/src/gdd/gdd.h index 1d47e3382..4de908a35 100644 --- a/src/gdd/gdd.h +++ b/src/gdd/gdd.h @@ -501,6 +501,10 @@ private: mutable aitUint32 ref_cnt; aitUint8 flags; + static epicsMutex * pGlobalMutex; + static epicsThreadOnceId staticInitOnce; + static void staticInit ( void * ); + const gdd* indexDD (aitIndex index) const; };