From d19586fdfdbba51b4617e12ce7983d3694ddf97f Mon Sep 17 00:00:00 2001 From: Michael Davidsaver Date: Mon, 30 Mar 2020 21:32:15 -0700 Subject: [PATCH] use recGblSetSevrMsg() --- modules/database/src/ioc/db/dbAccess.c | 2 +- modules/database/src/ioc/db/dbLink.c | 29 ++++++++++++++------ modules/database/src/std/dev/devEnviron.c | 4 +-- modules/database/src/std/rec/aiRecord.c | 2 +- modules/database/src/std/rec/calcoutRecord.c | 6 ++-- 5 files changed, 28 insertions(+), 15 deletions(-) diff --git a/modules/database/src/ioc/db/dbAccess.c b/modules/database/src/ioc/db/dbAccess.c index d4d8e873a..6c418f968 100644 --- a/modules/database/src/ioc/db/dbAccess.c +++ b/modules/database/src/ioc/db/dbAccess.c @@ -523,7 +523,7 @@ long dbProcess(dbCommon *precord) (precord->lcnt++ < MAX_LOCK) || (precord->sevr >= INVALID_ALARM)) goto all_done; - recGblSetSevr(precord, SCAN_ALARM, INVALID_ALARM); + recGblSetSevrMsg(precord, SCAN_ALARM, INVALID_ALARM, "Async in progress"); monitor_mask = recGblResetAlarms(precord); monitor_mask |= DBE_VALUE|DBE_LOG; pdbFldDes = pdbRecordType->papFldDes[pdbRecordType->indvalFlddes]; diff --git a/modules/database/src/ioc/db/dbLink.c b/modules/database/src/ioc/db/dbLink.c index d23355e0e..f2e19dbcb 100644 --- a/modules/database/src/ioc/db/dbLink.c +++ b/modules/database/src/ioc/db/dbLink.c @@ -313,10 +313,27 @@ long dbTryGetLink(struct link *plink, short dbrType, void *pbuffer, return plset->getValue(plink, dbrType, pbuffer, pnRequest); } +static +void setLinkAlarm(struct link* plink) +{ + struct dbCommon *precord = plink->precord; + dbRecordType *rdes = precord->rdes; + const char* amsg = NULL; + short i; + + for(i=0; ino_links; i++) { + dbFldDes *fdes = rdes->papFldDes[rdes->link_ind[i]]; + if((char*)plink - (char*)precord == fdes->offset) { + amsg = fdes->name; + } + } + + recGblSetSevrMsg(precord, LINK_ALARM, INVALID_ALARM, "field %s", amsg); +} + long dbGetLink(struct link *plink, short dbrType, void *pbuffer, long *poptions, long *pnRequest) { - struct dbCommon *precord = plink->precord; long status; if (poptions && *poptions) { @@ -328,7 +345,7 @@ long dbGetLink(struct link *plink, short dbrType, void *pbuffer, if (status == S_db_noLSET) return -1; if (status) - recGblSetSevr(precord, LINK_ALARM, INVALID_ALARM); + setLinkAlarm(plink); return status; } @@ -416,9 +433,7 @@ long dbPutLink(struct link *plink, short dbrType, const void *pbuffer, status = plset->putValue(plink, dbrType, pbuffer, nRequest); if (status) { - struct dbCommon *precord = plink->precord; - - recGblSetSevr(precord, LINK_ALARM, INVALID_ALARM); + setLinkAlarm(plink); } return status; } @@ -443,9 +458,7 @@ long dbPutLinkAsync(struct link *plink, short dbrType, const void *pbuffer, status = plset->putAsync(plink, dbrType, pbuffer, nRequest); if (status) { - struct dbCommon *precord = plink->precord; - - recGblSetSevr(precord, LINK_ALARM, INVALID_ALARM); + setLinkAlarm(plink); } return status; } diff --git a/modules/database/src/std/dev/devEnviron.c b/modules/database/src/std/dev/devEnviron.c index 77b89d001..910f1f0c7 100644 --- a/modules/database/src/std/dev/devEnviron.c +++ b/modules/database/src/std/dev/devEnviron.c @@ -63,7 +63,7 @@ static long read_lsi(lsiRecord *prec) prec->val[0] = 0; prec->len = 1; prec->udf = TRUE; - recGblSetSevr(prec, UDF_ALARM, prec->udfs); + recGblSetSevrMsg(prec, UDF_ALARM, prec->udfs, "No such ENV"); } return 0; @@ -114,7 +114,7 @@ static long read_stringin(stringinRecord *prec) else { prec->val[0] = 0; prec->udf = TRUE; - recGblSetSevr(prec, UDF_ALARM, prec->udfs); + recGblSetSevrMsg(prec, UDF_ALARM, prec->udfs, "No such ENV"); } return 0; diff --git a/modules/database/src/std/rec/aiRecord.c b/modules/database/src/std/rec/aiRecord.c index c149211b9..8d31b07ff 100644 --- a/modules/database/src/std/rec/aiRecord.c +++ b/modules/database/src/std/rec/aiRecord.c @@ -432,7 +432,7 @@ static void convert(aiRecord *prec) default: /* must use breakpoint table */ if (cvtRawToEngBpt(&val,prec->linr,prec->init,(void *)&prec->pbrk,&prec->lbrk)!=0) { - recGblSetSevr(prec,SOFT_ALARM,MAJOR_ALARM); + recGblSetSevrMsg(prec,SOFT_ALARM,MAJOR_ALARM, "BPT Error"); } } diff --git a/modules/database/src/std/rec/calcoutRecord.c b/modules/database/src/std/rec/calcoutRecord.c index dbd6be3f9..eadcc5862 100644 --- a/modules/database/src/std/rec/calcoutRecord.c +++ b/modules/database/src/std/rec/calcoutRecord.c @@ -236,7 +236,7 @@ static long process(struct dbCommon *pcommon) } if (fetch_values(prec) == 0) { if (calcPerform(&prec->a, &prec->val, prec->rpcl)) { - recGblSetSevr(prec, CALC_ALARM, INVALID_ALARM); + recGblSetSevrMsg(prec, CALC_ALARM, INVALID_ALARM, "calcPerform"); } else { prec->udf = isnan(prec->val); } @@ -610,7 +610,7 @@ static void execOutput(calcoutRecord *prec) break; case calcoutDOPT_Use_OVAL: if (calcPerform(&prec->a, &prec->oval, prec->orpc)) { - recGblSetSevr(prec, CALC_ALARM, INVALID_ALARM); + recGblSetSevrMsg(prec, CALC_ALARM, INVALID_ALARM, "OCAL calcPerform"); } else { prec->udf = isnan(prec->oval); } @@ -770,7 +770,7 @@ static long writeValue(calcoutRecord *prec) if (!pcalcoutDSET || !pcalcoutDSET->write) { errlogPrintf("%s DSET write does not exist\n", prec->name); - recGblSetSevr(prec, SOFT_ALARM, INVALID_ALARM); + recGblSetSevrMsg(prec, SOFT_ALARM, INVALID_ALARM, "DSET write does not exist"); prec->pact = TRUE; return(-1); }