Commit Graph
538 Commits
Author SHA1 Message Date
Simon Rose 87be9b7d49 Fix tiny typo 2026-10-14 15:45:57 +02:00
zimoch 3a5e12786d Add search path for epics-gdb-helper.py to assembler options
Gcc before version 4.7 does not pass -I options to the assembler automatically.
2026-10-14 15:45:56 +02:00
Michael Davidsaver 4e7296287f rsrv: special case PUT with callback with scalar string
When dataType==DBR_STRING && count==1, libca may optimize
by sending less than 40 bytes.
Re-arrange write_notify_action() so that this case can
copy directly into the put notify buffer.

Factor out write_notify_cancel() to make clear that the
current message header / pBuffer are not used.

Also, call out magic 60 second timeout.
2026-10-14 15:45:56 +02:00
Michael Davidsaver 8c66842969 rsrv: special case PUT with scalar string
When dataType==DBR_STRING && count==1, libca may optimize
by sending less than 40 bytes.
Add a special scratch buffer for this case so that downstream
code can continue to assume MAX_STRING_SIZE.
2026-10-14 15:45:56 +02:00
Michael Davidsaver 620c07c1b5 dbPut/dbPutField check nRequest 2026-10-14 15:45:55 +02:00
Michael Davidsaver b46b1b0860 rsrv: remove pPayload for debug logging
Unused since 33f4d15ff3.
Now make clear that this is so.
2026-10-14 15:45:38 +02:00
Michael Davidsaver cb75bf73c7 doc 2026-10-14 15:12:24 +02:00
Ralph Lange 5af37ca3d4 db: fix dbChannel_put() for DBR_TIME_STRING
DBR_TIME is the option mask 0x10 from dbAccessDefs.h, not a field data type
2026-10-14 15:12:10 +02:00
Michael Davidsaver bc40b6155b db: dbPutNotifyBlocker type check 2026-10-14 15:12:09 +02:00
Michael Davidsaver c867a6b9cb rsrv: log_header don't log string specially
payload may not be null terminated
2026-10-14 15:12:08 +02:00
Michael Davidsaver d06647836f rsrv: cross-check m_count message field with payload buffer length
Bounds check m_count / element count against dbChannel.

For write_notify_action only.
Bounds check DBR data size against received payload buffer length

For write_action, add pre-test with dbr_size_n() before caNetConvert()
2026-10-14 15:12:08 +02:00
Michael Davidsaver b2fde23f53 rsrv: clarify bucketID locking
Make clear that bucketID is guarded by clientQlock
2026-10-14 15:12:07 +02:00
Michael Davidsaver 187b9b961c rsrv: prevent use of CID between clients
In this context "CID" means Channel ID,
in this case meaning the server assigned identifier.
While in other contexts this is called SID (Server ID),
to distinguish from the Client ID (also CID :( )
2026-10-14 15:12:07 +02:00
Michael Davidsaver 2ae6e4f85a rsrv: catch overflow of extended message size
Treat as corruption, and ignore/close
2026-10-14 15:12:07 +02:00
Michael Davidsaver 3cd526411f rsrv: old TCP client tar pit
A short message could underflow, leaving a too old client stuck
in a tar pit.  An acceptable outcome, but not intended.
Instead, send back errors to each message.
2026-10-14 15:12:06 +02:00
Jacqueline GarrahanandClaude Opus 4.8 a0bfa01cf5 dbStaticLib: fix dbGetStringNum reading UINT64 through a 32-bit pointer
The DBF_UINT64 case dereferenced the 8-byte field as *(epicsUInt32 *),
reading only its low 32 bits, so large UINT64 values printed wrong
(e.g. 0x1_0000_0000 as "0") and save/restore round-tripping broke.  Cast
to epicsUInt64*, matching the adjacent DBF_INT64 case.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-10-14 15:11:30 +02:00
Sang Woo Kim 5a225a9bbb rsrv: reject a non-finite beacon period
The beacon-period gate in online_notify already rejected a parse
failure and a non-positive value, but epicsScanDouble parses "nan" and
"inf", and maxPeriod<=0.0 is false for both, so a non-finite period
reached the beacon delay loop. A NaN maxdelay makes delay<maxdelay
false forever, pinning the beacon interval at the 0.02 s startup value
- a ~50 Hz beacon flood on every configured interface; an infinite
maxdelay lets the doubling delay grow without bound, silencing beacons
entirely.

Gate on finite() (from epicsMath.h), matching the client-side
EPICS_CA_MAX_SEARCH_PERIOD handling in udpiiu.cpp, and name the actual
problem in the diagnostic instead of "float fetch failed" (the message
already covered the non-positive case, which is not a fetch failure).
2026-10-14 11:21:36 +02:00
Jacqueline GarrahanandClaude Opus 4.8 f63c5e9d3b dbConvert: fix UInt64->String conversion truncating to 32 bits
putUInt64String used cvtUlongToString, which is cvtUInt32ToString, so the
64-bit source was narrowed to its low 32 bits (e.g. 0x1_0000_0007 printed
as "7").  Use cvtUInt64ToString, matching getUInt64String and every other
width-specific putXxxString.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-10-14 11:19:19 +02:00
Jacqueline GarrahanandClaude Opus 4.8 91aba2cb0a dbJLink: fix assignment-instead-of-compare in dbJLinkMapAll
The guard used recname[0] = '\0' (assignment) instead of == , which wrote
a NUL into the caller's string, truncating it to "", and evaluated to 0
so recname was left non-NULL pointing at "".  Every record then failed
the name comparison and nothing was mapped.  Use ==, matching dbjlr.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-10-14 11:18:33 +02:00
Michael Davidsaver fe59acb15f rsrv: USE_TYPED_DBEVENT 2026-10-14 11:17:44 +02:00
Andrew Johnson f73f888df8 Move -DUSE_TYPED_DRVET to USR_CPPFLAGS
Also fixes an issue in the generated registerRecordDeviceDriver code.
2026-10-14 11:17:01 +02:00
Michael Davidsaver 2f460bdf26 rsrv: log_header paddr=
Currently prints dbChannel**
2026-10-14 11:16:22 +02:00
Michael Davidsaver c7e9310439 minor 2026-10-14 11:16:10 +02:00
Michael Davidsaver bb5b1b5c7b fix last LOCAL 2026-10-14 11:16:03 +02:00
Jeremy Lorelli 5b962a702b database: Replace epicsEventMustSignal -> epicsEventMustTrigger in comments 2026-10-14 11:15:56 +02:00
Michael Davidsaver 84c56e99b5 doc devSup.h 2026-10-14 11:15:36 +02:00
Michael Davidsaver 1dc953a672 Document dbScan.h 2026-10-14 11:15:24 +02:00
Michael Davidsaver 50c0fcc725 dbScan one more NUM_TIME_EVENTS 2026-10-14 11:15:03 +02:00
Michael Davidsaver 884e001f6e minor 2026-10-14 11:14:51 +02:00
mdavidsaver a6c4933742 Embed GDB helper
* Add GDB helper script

Pretty printing of some common argument types

Need to add a line to ~/.gdbinit

> add-auto-load-safe-path /path/to/base/checkout/

afterwards verify at GDB shell with

> info auto-load python-scripts
> info pretty-printer

Tested with GDB 16.3 circa Debian 13

Add $rcast(dbCommon) to up-cast
Add $record("name") to lookup record
Add $elln(ELLLIST,#) to index into list
2026-10-14 11:14:32 +02:00
Torsten Bögershausen 88a2b165ae dbAccess.c: Improve logging of illegal field_type
Debugging a problem and looking at the message

recGblDbaddrError: dbPut: Request type is 0 Illegal Database Request Type...
does not help very much: request type 0 is a legal value.

Improve the message to show the field type as well:
recGblDbaddrError: dbPut: dbrType = 0 field_type = DBF_INLIK (14)...

Do the same for both dbPut and dbGet.
2026-10-14 10:57:09 +02:00
Michael Davidsaver 70070d8276 doc dbBase.h
document dbBase list node types
2026-10-13 10:18:22 +02:00
Andrew Johnson c2726b87d2 Error message fixes/improvements 2026-10-13 10:17:37 +02:00
Michael Davidsaver 12e75c541c doc dbProcess() 2026-10-13 10:16:51 +02:00
zimoch d6df659acf Merge commit '631c8831b942ee5533a2f7016085dcef52c2f3ba' into PSI-7.0
Merge latest 7.0 until before records are modified
2026-10-13 10:15:50 +02:00
Michael Davidsaver cf7ab0f65e dbCa: iocInit wait for all conditions
After connectCallback, need to wait for up to three
concurrent actions.  Native and string subscriptions,
as well as GET of metadata.

Complicated because event_handler_args does not identify
the evid.

see 717d69e1fc
2026-10-13 09:42:17 +02:00
zimoch 15ba5ed863 Merge branch '7.0' into PSI-7.0 2026-09-28 09:39:12 +02:00
ronaldomercado 2d8a6f91a9 Use consistent language for string termination (#806)
Avoid hyphen, prefer space: "null terminated"
2026-03-18 10:45:25 -05:00
Irie Railton f4ccf7bc8c iocsh command dbCreateRecord (#812)
* skeleton for implementation of dbCreateRecord iocsh exposure

* Add functionality of dbCreateRecordCallFunc
Includes adding dependancy to iocInit.h and a new error type in dbStaticLib.h

* Fix error message for case when adding record to IOC post init

* add new error message for when no record name is passed and check for empty strings

* add release note for dbCreateRecord IOC shell command

* fix issues from codeql in release notes

* fix documentation md based on codacy styling
2026-03-10 12:48:05 -05:00
Andrew Johnson 01e1073163 Fix editorconfig failure 2026-03-10 12:42:18 -05:00
ReBarsotti-HZB 5b23dcb466 Added Doxygen annotations to iocInit.h (#804)
Doxygen annotations for iocInit.h
2026-03-05 11:43:14 -06:00
ronaldomercado c7b899dca3 Annotate dbbase (#815)
* add doxygen tags

* add dbBase to be processed by sphinx
2026-03-03 18:13:52 -06:00
Michael Davidsaver d44ddf441a configure: ensure output file only updated on success
eg. After running "false > $@", the output file modification
time will be updated.  So a despite failure, a repeated
"make" will not re-run.

Handle this by accumulating output to "$@.tmp", then
move to $@ as a final step.
2026-02-27 16:17:53 +00:00
Michael Davidsaver 717d69e1fc dbCa: iocInit wait for local CA links to connect 2026-02-27 13:01:27 +00:00
Michael Davidsaver c41210c008 whitespace 2026-02-27 11:45:42 +00:00
ReBarsotti-HZB 976ef26381 Added Doxygen annotations to dbLock.h 2026-02-27 11:28:00 +00:00
ReBarsotti-HZB 06ec85be80 Added @file to dbExtractArray
File was already annotated but missing the @file declaration.
2026-02-27 11:25:15 +00:00
zimoch db693d4930 enable trim_trailing_whitespace 2026-02-18 10:34:08 -06:00
zimoch 8c9dd71f6e Fix gcc warning 'stringop-truncation' 2026-02-18 10:06:26 -06:00
zimoch fe39a007d8 Allow percentages for callbackParallelThreads count 2026-02-18 09:50:03 -06:00