nuttx/drivers/syslog
Michal Lenc 1685e8ff7b syslog: avoid an infinite loop if one channel fails
The current implementation exits syslog_write_foreach function
if write to one channel fails, causing other channels not being written
and returning negated errno. libc syslog functions then stay in
an infinite loop, because error is returned and the same bytes
are still passed to syslograwstream_flush and syslog_write_foreach.

The channel write may fail for many reasons - disconnected USB if
CDC ACM syslog is enabled, lost networking if telnet syslog is enabled,
error on NOR flash etc. This shouldn't lead to an ininite loop in the
code though.

The solution ensures all channels in syslog_write_foreach are tried,
therefore the user get the output to the working channels even if
the first one is broken. It also updates syslograwstream_addchar and
syslograwstream_addstring to skip the bytes if all channels fails. This
ensures syslog call won't result in an infinite loop, but the user may
lost the debugging output.

Co-authored-by: Martin Krasula <mkrasula@elektroline.cz>
Signed-off-by: Michal Lenc <michallenc@seznam.cz>
2026-06-23 22:45:01 +08:00
..
CMakeLists.txt sched/syslog: Add early_syslog() for early boot or system down debugging 2025-10-31 08:29:17 -03:00
Kconfig drivers/syslog: add millisecond option for syslog timestamp formatting 2026-02-27 08:09:31 -03:00
Make.defs Documentation: Add description for early_syslog() 2025-10-31 08:29:17 -03:00
ramlog.c include/debug.h: Move to include/nuttx/debug.h 2026-04-07 07:50:06 -03:00
syslog.h syslog/inbuffer: refactor intbuffer to circbuf 2024-12-17 20:48:23 +08:00
syslog_channel.c drivers/syslog/syslog_channel.c: fix incompatible-pointer-types compile errors 2025-08-07 10:16:20 -03:00
syslog_chardev.c drivers: migrate to SPDX identifier 2024-11-06 18:02:25 +08:00
syslog_console.c include/debug.h: Move to include/nuttx/debug.h 2026-04-07 07:50:06 -03:00
syslog_consolechannel.c drivers: migrate to SPDX identifier 2024-11-06 18:02:25 +08:00
syslog_devchannel.c drivers: migrate to SPDX identifier 2024-11-06 18:02:25 +08:00
syslog_device.c style: fix spelling in code comments and strings 2025-05-23 10:48:41 +08:00
syslog_early.c sched/syslog: Add early_syslog() for early boot or system down debugging 2025-10-31 08:29:17 -03:00
syslog_filechannel.c drivers: migrate to SPDX identifier 2024-11-06 18:02:25 +08:00
syslog_flush.c drivers: migrate to SPDX identifier 2024-11-06 18:02:25 +08:00
syslog_initialize.c drivers: migrate to SPDX identifier 2024-11-06 18:02:25 +08:00
syslog_intbuffer.c sched/spin_lock: rename raw_spin_lock to spin_lock_notrace 2025-02-13 20:48:15 +08:00
syslog_rpmsg.c syslog/rpmsg: disable force put char to lower putc 2025-06-03 17:33:03 +08:00
syslog_rpmsg.h drivers: migrate to SPDX identifier 2024-11-06 18:02:25 +08:00
syslog_rpmsg_server.c syslog/rpmsg_server: fix build break if enable SYSLOG_RPMSG/SYSLOG_RPMSG_SERVER 2025-02-25 10:51:37 +01:00
syslog_stream.c drivers: migrate to SPDX identifier 2024-11-06 18:02:25 +08:00
syslog_write.c syslog: avoid an infinite loop if one channel fails 2026-06-23 22:45:01 +08:00
vsyslog.c !nuttx: drop redundant casts on tv_sec/tv_nsec and fix printf formats 2026-05-19 16:21:28 +08:00
vsyslog_rfc5424.c drivers/syslog: Add RFC 5424 protocol support 2025-06-13 20:26:57 +08:00