Expand description
Record field tables generated from the vendored EPICS .dbd record
declarations — the machine-readable spec every FieldDesc used to be
hand-copied from.
@generated by tools/dbd-codegen from crates/std-rs/dbd/*.dbd.
DO NOT EDIT. Re-run cargo run -p dbd-codegen -- --write after changing a
vendored .dbd. Drift is caught by dbd_codegen::tests::generated_files_are_not_stale,
which cargo nextest run executes — locally and in CI — so a stale table
is a failing test, not a comment asking you to remember.
What is not here, and why:
-
dbCommonfields. The port models them once inCommonFields, so splicing them into every record table would double-declare them. Base’s table emits them separately asDB_COMMON_FIELDSso the two models can be reconciled (and so adbCommonaddition is a diff, not a silent gap). -
DBF_NOACCESSrows whoseextra(...)names a pointer or an array (RSET,DPVT,MLOK,BPTR,PPN, …). C keepssizeofthe struct member inpdbFldDes->size, and neither a pointer (whose C value is an address no two IOCs agree on) nor an array (whose width is its bound, not its element) has one this port can state, so the descriptor is dropped rather than invented — but the NAME is kept (record_noaccess_fields): C’sdbNameToAddrresolves them, so a SEARCH forREC.BPTRis answered and the refusal lands at channel creation, and the search gate needs the names to do the same.A row whose
extra(...)names a plain scalar —dbCommon’sBKPTandTIME— is CARRIED, descriptor and width both, becausedbprprints its bytes anddbareports itsField Sizeand both read the declaration. Carried is not servable:FieldDesc::unreadableis what refuses the read, so the SEARCH is answered off the descriptor instead of off the name list.
Statics§
- EPID_
DECL recordtype(epid)— C’spapFldDesorder, all 99 declarations including the internalsEPID_FIELDSdrops. The index into this is C’sindRecordType.- EPID_
FIELDS recordtype(epid)— 51 CA-visible own fields fromdbd/epidRecord.dbd(0DBF_NOACCESSinternals dropped).- EPID_
NOACCESS recordtype(epid)— theDBF_NOACCESSinternal names dropped fromEPID_FIELDS: resolvable (a SEARCH is answered), never servable.- MENUS
- Every
menu()this target declares: EPICS name,choice()identifiers, and choice values — the three columnsdbWriteMenuFPprints (dbStaticLib.c:919-924), which is whatdbDumpMenureports. - MENU_
EPID_ FEEDBACK_ MODE menu(epidFeedbackMode)- MENU_
EPID_ FEEDBACK_ STATE menu(epidFeedbackState)- MENU_
THROTTLE_ DRVLC menu(throttleDRVLC)- MENU_
THROTTLE_ DRVLS menu(throttleDRVLS)- MENU_
THROTTLE_ OV menu(throttleOV)- MENU_
THROTTLE_ STS menu(throttleSTS)- MENU_
THROTTLE_ SYNC menu(throttleSYNC)- MENU_
THROTTLE_ WAIT menu(throttleWAIT)- MENU_
TIMESTAMP_ TST menu(timestampTST)- RECORD_
TYPES - Every record type a vendored
.dbddeclares, in.dbdname order. - THROTTLE_
DECL recordtype(throttle)— C’spapFldDesorder, all 70 declarations including the internalsTHROTTLE_FIELDSdrops. The index into this is C’sindRecordType.- THROTTLE_
FIELDS recordtype(throttle)— 21 CA-visible own fields fromdbd/throttleRecord.dbd(1DBF_NOACCESSinternals dropped).- THROTTLE_
NOACCESS recordtype(throttle)— theDBF_NOACCESSinternal names dropped fromTHROTTLE_FIELDS: resolvable (a SEARCH is answered), never servable.- TIMESTAMP_
DECL recordtype(timestamp)— C’spapFldDesorder, all 52 declarations including the internalsTIMESTAMP_FIELDSdrops. The index into this is C’sindRecordType.- TIMESTAMP_
FIELDS recordtype(timestamp)— 4 CA-visible own fields fromdbd/timestampRecord.dbd(0DBF_NOACCESSinternals dropped).- TIMESTAMP_
NOACCESS recordtype(timestamp)— theDBF_NOACCESSinternal names dropped fromTIMESTAMP_FIELDS: resolvable (a SEARCH is answered), never servable.- VARIABLES
- Every
variable()this target’s.dbds declare, as EPICS name and declared type — the two columnsdbWriteVariableFPprints (dbStaticLib.c:1136-1149), which is whatdbDumpVariablereports.
Functions§
- menu_
choices - Every
menu()declared by a vendored.dbd, keyed by its EPICS name. - record_
declaration_ order - Every field a record type declares, in C’s
papFldDesorder — the orderdbDumpRecordTypeindexes andlink_ind/sortFldInd/indvalFlddespoint into. Unlikerecord_fieldsthis keeps theDBF_NOACCESSinternals and splices dbCommon where the.dbdputs itsinclude, so the index of a name here is C’s ownindRecordTypefor it. - record_
fields - The record-own field table for a record type name, or
Nonefor a type no vendored.dbddeclares. - record_
no_ prompt - C’s
pdbRecordType->no_prompt: how many ofrecord_declaration_order’s declarations carry apromptgroup(...)(dbLexRoutines.c:752). Counted here because the port dropspromptgroupat emit, so it cannot be recovered from the field tables. - record_
noaccess_ fields - The record-own
DBF_NOACCESSinternal names for a record type — fields C’sdbNameToAddrresolves (a SEARCH is answered) but whose channel is refused at creation (mapDBFToDBR->DBR_NOACCESS). Empty for a type declaring none,Nonefor a type no vendored.dbddeclares.