yamt commented on code in PR #14761:
URL: https://github.com/apache/nuttx/pull/14761#discussion_r1843250129
##########
drivers/syslog/syslog_channel.c:
##########
@@ -234,23 +229,31 @@ g_syslog_channel[CONFIG_SYSLOG_MAX_CHANNELS] =
#ifdef CONFIG_SYSLOG_DEFAULT
static int syslog_default_putc(FAR syslog_channel_t *channel, int ch)
{
- UNUSED(channel);
-
# ifdef CONFIG_ARCH_LOWPUTC
+ /* See https://github.com/apache/nuttx/issues/14662
+ * about what this critical section is for.
+ */
+
+ irqstate_t flags = enter_critical_section();
up_putc(ch);
+ leave_critical_section(flags);
Review Comment:
> I seem to remember seeing a discussion about serial/syslog locking and
where it should be, but IMO the mutual exclusion (whatever the chosen mechanism
is..) should be on the device level as the shared resource here is the serial
port device? So replacing the critical section from both serial.c and syslog.c
by a single spinlock should not be an issue. As it would be the serial port
lock.
maybe ideally device-level locking might work better.
it likely involves major surgeries on the api (uart_ops_s) and every
xxx_serial.c, which i'm not sure if it warrants the effort though.
> Also, doesn't syslog support other devices than serial port as well ? Are
they protected by enter/exit_critcal (I honestly don't know).
different syslog channels use different serializations.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]