From 4982a6308b7ec4977f58afa7a4bcb9d3dfac2c40 Mon Sep 17 00:00:00 2001 From: Andrew Johnson <anj@aps.anl.gov> Date: Fri, 4 May 2012 17:34:48 -0500 Subject: [PATCH] db: Don't call epicsPrintf() from callbackRequest() The callbackRequest() routine can be called from an ISR, so use epicsInterruptContextMessage() to print errors. --- src/db/callback.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/db/callback.c b/src/db/callback.c index c3d4c59fe6..4e364b1813 100644 --- a/src/db/callback.c +++ b/src/db/callback.c @@ -17,6 +17,7 @@ #include <stddef.h> #include <stdlib.h> #include <stdio.h> +#include <string.h> #include "cantProceed.h" #include "dbDefs.h" @@ -152,12 +153,12 @@ void callbackRequest(CALLBACK *pcallback) int lockKey; if (!pcallback) { - epicsPrintf("callbackRequest called with NULL pcallback\n"); + epicsInterruptContextMessage("callbackRequest: pcallback was NULL\n"); return; } priority = pcallback->priority; if (priority < 0 || priority >= NUM_CALLBACK_PRIORITIES) { - epicsPrintf("callbackRequest called with invalid priority\n"); + epicsInterruptContextMessage("callbackRequest: Bad priority\n"); return; } if (ringOverflow[priority]) return; @@ -167,8 +168,11 @@ void callbackRequest(CALLBACK *pcallback) epicsInterruptUnlock(lockKey); if (!pushOK) { - errlogPrintf("callbackRequest: %s ring buffer full\n", - threadName[priority]); + char msg[48] = "callbackRequest: "; + + strcat(msg, threadName[priority]); + strcat(msg, " ring buffer full\n"); + epicsInterruptContextMessage(msg); ringOverflow[priority] = TRUE; } epicsEventSignal(callbackSem[priority]); -- GitLab