From 23450fcfc81d98b1cd3d71deb598c4d323508846 Mon Sep 17 00:00:00 2001 From: Andrew Johnson Date: Sat, 16 Nov 2019 22:16:50 -0600 Subject: [PATCH] Modify printfdset, set USE_TYPED_DSET --- modules/database/src/std/dev/Makefile | 3 +++ modules/database/src/std/dev/devPrintfSoft.c | 2 +- modules/database/src/std/dev/devPrintfSoftCallback.c | 2 +- modules/database/src/std/dev/devStdio.c | 2 +- modules/database/src/std/rec/Makefile | 1 + modules/database/src/std/rec/printfRecord.c | 8 ++++---- modules/database/src/std/rec/printfRecord.dbd | 9 +++------ 7 files changed, 14 insertions(+), 13 deletions(-) diff --git a/modules/database/src/std/dev/Makefile b/modules/database/src/std/dev/Makefile index ec3713bd6..a42879883 100644 --- a/modules/database/src/std/dev/Makefile +++ b/modules/database/src/std/dev/Makefile @@ -42,6 +42,7 @@ dbRecStd_SRCS += devMbboDirectSoft.c dbRecStd_SRCS += devMbboDirectSoftRaw.c dbRecStd_SRCS += devMbboSoft.c dbRecStd_SRCS += devMbboSoftRaw.c +devPrintfSoft_CFLAGS += -DUSE_TYPED_DSET dbRecStd_SRCS += devPrintfSoft.c dbRecStd_SRCS += devSASoft.c dbRecStd_SRCS += devSiSoft.c @@ -65,10 +66,12 @@ dbRecStd_SRCS += devLoSoftCallback.c dbRecStd_SRCS += devLsoSoftCallback.c dbRecStd_SRCS += devMbboSoftCallback.c dbRecStd_SRCS += devMbboDirectSoftCallback.c +devPrintfSoftCallback_CFLAGS += -DUSE_TYPED_DSET dbRecStd_SRCS += devPrintfSoftCallback.c dbRecStd_SRCS += devSoSoftCallback.c dbRecStd_SRCS += devTimestamp.c +devStdio_CFLAGS += -DUSE_TYPED_DSET dbRecStd_SRCS += devStdio.c dbRecStd_SRCS += devEnviron.c diff --git a/modules/database/src/std/dev/devPrintfSoft.c b/modules/database/src/std/dev/devPrintfSoft.c index ca06f04be..053b6e44d 100644 --- a/modules/database/src/std/dev/devPrintfSoft.c +++ b/modules/database/src/std/dev/devPrintfSoft.c @@ -19,7 +19,7 @@ static long write_string(printfRecord *prec) } printfdset devPrintfSoft = { - 5, NULL, NULL, NULL, NULL, write_string + { 5, NULL, NULL, NULL, NULL }, write_string }; epicsExportAddress(dset, devPrintfSoft); diff --git a/modules/database/src/std/dev/devPrintfSoftCallback.c b/modules/database/src/std/dev/devPrintfSoftCallback.c index e89afd53b..a17efc400 100644 --- a/modules/database/src/std/dev/devPrintfSoftCallback.c +++ b/modules/database/src/std/dev/devPrintfSoftCallback.c @@ -40,6 +40,6 @@ static long write_string(printfRecord *prec) } printfdset devPrintfSoftCallback = { - 5, NULL, NULL, NULL, NULL, write_string + { 5, NULL, NULL, NULL, NULL }, write_string }; epicsExportAddress(dset, devPrintfSoftCallback); diff --git a/modules/database/src/std/dev/devStdio.c b/modules/database/src/std/dev/devStdio.c index e957bfce0..0bed72a57 100644 --- a/modules/database/src/std/dev/devStdio.c +++ b/modules/database/src/std/dev/devStdio.c @@ -153,7 +153,7 @@ static long write_printf(printfRecord *prec) } printfdset devPrintfStdio = { - 5, NULL, init_printf, NULL, NULL, write_printf + {5, NULL, init_printf, NULL, NULL }, write_printf }; epicsExportAddress(dset, devPrintfStdio); diff --git a/modules/database/src/std/rec/Makefile b/modules/database/src/std/rec/Makefile index 87021987e..d950eda35 100644 --- a/modules/database/src/std/rec/Makefile +++ b/modules/database/src/std/rec/Makefile @@ -36,6 +36,7 @@ stdRecords += mbbiDirectRecord stdRecords += mbboRecord stdRecords += mbboDirectRecord stdRecords += permissiveRecord +printfRecord_CFLAGS += -DUSE_TYPED_DSET stdRecords += printfRecord stdRecords += selRecord stdRecords += seqRecord diff --git a/modules/database/src/std/rec/printfRecord.c b/modules/database/src/std/rec/printfRecord.c index 576b9632a..8a8edb133 100644 --- a/modules/database/src/std/rec/printfRecord.c +++ b/modules/database/src/std/rec/printfRecord.c @@ -336,13 +336,13 @@ static long init_record(struct dbCommon *pcommon, int pass) if (!pdset) return 0; /* Device support is optional */ - if (pdset->number < 5) { + if (pdset->common.number < 5) { recGblRecordError(S_dev_missingSup, prec, "printf::init_record"); return S_dev_missingSup; } - if (pdset->init_record) { - long status = pdset->init_record(prec); + if (pdset->common.init_record) { + long status = pdset->common.init_record(pcommon); if (status) return status; } @@ -368,7 +368,7 @@ static long process(struct dbCommon *pcommon) /* Call device support */ pdset = (printfdset *) prec->dset; if (pdset && - pdset->number >= 5 && + pdset->common.number >= 5 && pdset->write_string) { status = pdset->write_string(prec); diff --git a/modules/database/src/std/rec/printfRecord.dbd b/modules/database/src/std/rec/printfRecord.dbd index 4fd63ef3c..6cdbc73c4 100644 --- a/modules/database/src/std/rec/printfRecord.dbd +++ b/modules/database/src/std/rec/printfRecord.dbd @@ -10,13 +10,10 @@ recordtype(printf) { %#include "devSup.h" % %/* Declare Device Support Entry Table */ + %struct printfRecord; %typedef struct printfdset { - % long number; - % DEVSUPFUN report; - % DEVSUPFUN init; - % DEVSUPFUN init_record; - % DEVSUPFUN get_ioint_info; - % DEVSUPFUN write_string; + % dset common; + % long (*write_string)(struct printfRecord *prec); %} printfdset; % field(VAL,DBF_NOACCESS) {