From a9a975b1e406b2fcc04fe65c98d5976a77d0e1b3 Mon Sep 17 00:00:00 2001 From: Dirk Zimoch Date: Tue, 12 May 2020 12:13:06 +0200 Subject: [PATCH] changes callbacks to use locked ring buffer --- src/db/callback.c | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/src/db/callback.c b/src/db/callback.c index c387d79bb..998ae70e5 100644 --- a/src/db/callback.c +++ b/src/db/callback.c @@ -110,9 +110,7 @@ static void callbackShutdown(void *arg) int i; for (i = 0; i < NUM_CALLBACK_PRIORITIES; i++) { - int lockKey = epicsInterruptLock(); int ok = epicsRingPointerPush(callbackQ[i], &exitCallback); - epicsInterruptUnlock(lockKey); epicsEventSignal(callbackSem[i]); if (ok) epicsEventWait(startStopEvent); } @@ -128,7 +126,7 @@ static void callbackInitOnce(void *arg) epicsThreadId tid; callbackSem[i] = epicsEventMustCreate(epicsEventEmpty); - callbackQ[i] = epicsRingPointerCreate(callbackQueueSize); + callbackQ[i] = epicsRingPointerLockedCreate(callbackQueueSize); if (callbackQ[i] == 0) cantProceed("epicsRingPointerCreate failed for %s\n", threadName[i]); @@ -154,7 +152,6 @@ void callbackRequest(CALLBACK *pcallback) { int priority; int pushOK; - int lockKey; if (!pcallback) { epicsInterruptContextMessage("callbackRequest: pcallback was NULL\n"); @@ -167,9 +164,7 @@ void callbackRequest(CALLBACK *pcallback) } if (ringOverflow[priority]) return; - lockKey = epicsInterruptLock(); pushOK = epicsRingPointerPush(callbackQ[priority], pcallback); - epicsInterruptUnlock(lockKey); if (!pushOK) { epicsInterruptContextMessage(fullMessage[priority]);