ioc/dbStatic: add dbInitEntryFromRecord()

This commit is contained in:
Michael Davidsaver
2017-05-01 16:02:14 -04:00
parent 5d37bc2996
commit 6ba949cdb4
2 changed files with 22 additions and 2 deletions

View File

@@ -686,14 +686,27 @@ void dbInitEntryFromAddr(struct dbAddr *paddr, DBENTRY *pdbentry)
{
struct dbCommon *prec = paddr->precord;
dbCommonPvt *ppvt = CONTAINER(prec, dbCommonPvt, common);
memset((char *)pdbentry,'\0',sizeof(DBENTRY));
pdbentry->pdbbase = pdbbase;
pdbentry->precordType = prec->rdes;
pdbentry->precnode = ppvt->node;
pdbentry->pflddes = paddr->pfldDes;
pdbentry->pinfonode = NULL;
pdbentry->pfield = paddr->pfield;
pdbentry->indfield = -1; /* invalid */
pdbentry->message = NULL;
}
void dbInitEntryFromRecord(struct dbCommon *prec, DBENTRY *pdbentry)
{
dbCommonPvt *ppvt = CONTAINER(prec, dbCommonPvt, common);
memset((char *)pdbentry,'\0',sizeof(DBENTRY));
pdbentry->pdbbase = pdbbase;
pdbentry->precordType = prec->rdes;
pdbentry->precnode = ppvt->node;
pdbentry->indfield = -1; /* invalid */
}
long dbValueSize(short dbr_type)

View File

@@ -58,6 +58,7 @@ typedef struct{
} DBENTRY;
struct dbAddr;
struct dbCommon;
/*dbDumpFldDes is obsolete. It is only provided for compatibility*/
#define dbDumpFldDes dbDumpField
@@ -74,6 +75,12 @@ epicsShareFunc void dbInitEntry(DBBASE *pdbbase,
* except that DBENTRY::indfield is not set
*/
epicsShareFunc void dbInitEntryFromAddr(struct dbAddr *paddr, DBENTRY *pdbentry);
/** Initialize DBENTRY from a valid record (dbCommon*).
* Constant time equivalent of dbInitEntry() then dbFindRecord()
* when no field is specified (pflddes and pfield are NULL).
* except that DBENTRY::indfield is not set.
*/
epicsShareFunc void dbInitEntryFromRecord(struct dbCommon *prec, DBENTRY *pdbentry);
epicsShareFunc void dbFinishEntry(DBENTRY *pdbentry);
epicsShareFunc DBENTRY * dbCopyEntry(DBENTRY *pdbentry);
epicsShareFunc void dbCopyEntryContents(DBENTRY *pfrom,