EPICS_ABORT_ON_ASSERT was introduced to kill the entire IOC instead of
suspending an individual thread on assert failure. This behavior,
however, was not implemented for cantProceed, which left most of the
epicsMustBlah APIs with the suspention behavior (except for a couple
APIs that called assert() instead).
* Add RTEMS libbsd static network config for motload nvram
setBootConfigFromNVRAM() now configures static networking via the
libbsd rtems_bsd_ifconfig() API when building against RTEMS with
libbsd. It only uses static networking if it can find a configured IP
and netmask from GEV or the mot script boot parameters, otherwise it
falls back to DHCP.
Also note, NTP was part of setBootConfigFromNVRAM() when using legacy
RTEMS networking, but is handled outside this function for LibBSD. To
preserve the legacy behavior, setBootConfigFromNVRAM() still pulls out
NTP server info, but now stores it in an output parameter for outside
code to use.
* Wait for link to come up when starting RTEMS/libbsd/static IP
When configuring a static IP on RTEMS/libbsd, we need to intentionally
wait for the link to come up before continuing to configure ntp, etc.
* Separate common network setup from BSP specific implementations
All the BSP setBootConfigFromNVRAM() functions ultimately configured
the RTEMS networking the same way. The common networking code
has been pulled out into a separate function now called from BSP specific
code.
All networking setup is now included and optionally used only
when the BSP sets the field appropriately.
This lets the setBootConfigFromNVRAM functions be independent of the
network stack, just focussing on collecting the configuration from each
BSP as appropriate.
* Fix unused function warnings for functions unused on certain BSPs
* Remove old comments about if MY_BOOTP
* Added release note entry
--
Co-authored-by: Brendan Chandler <bchandler@anl.gov>
epicsEventCreate() mallocs the wrapper but epicsEventDestroy() only
destroys the embedded rtems_binary_semaphore, leaking one heap block
per event lifecycle on every RTEMS >= 5 build.
The used-bytes count is nextPut - nextGet everywhere else in this file
(epicsRingBytesPut, epicsRingBytesUsedBytes), but
epicsRingBytesResetHighWaterMark computed nextGet - nextPut. For a ring
holding u bytes it therefore stored size-u; since Put only raises the
mark, the high-water mark stayed permanently inflated and wrong.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
epicsParseDouble returns 0 on success and non-zero on failure, but the
branches were swapped: a valid delay printed "Invalid 'on error wait'
delay" and the usage text, while an invalid delay was silently accepted
with timeout forced to 5.0. Report the error on parse failure and accept
the value on success.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
errlogBufResize copied the print buffer from &pvt.print->base (the
address of the char* field inside the buffer_t struct) instead of
pvt.print->base (the buffer it points to), reading bufSize bytes from an
~8-byte struct field. Drop the stray & so it reads the actual buffer,
matching the adjacent log-buffer copy.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
RTEMS performs a few early errlogPrintf calls. This initialises
the errlog buffers to some default values blocking certain tests
from re-initialising the error log later.
The DST characteristics of the POSIX EST5EDT and CST6CDT timezones
depend on whether the implementation uses the built-in POSIX definition
or reads an updated version from the tzdata files, and for POSIX
timezones, there is no specified behavior [1].
To avoid any plaform-specific behavior, we can specify the desired DST
ourselves. We used the timezone values available in
configure/CONFIG_SITE_ENV, which already included DST information, and
means the tests are consistent with our own usage.
[1] https://www.openwall.com/lists/musl/2024/03/05/2
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.
Fix EditorConfig failure in modules/libcom/RTEMS/epicsNtp.c
Add dbDefs to Sphinx API index, move devLib to libcom
Rename internal CA enum tag to fix Doxygen complaint
Set Clang's minimum MacOS version for aarch64 CPUs