gustavonihei commented on a change in pull request #5017:
URL: https://github.com/apache/incubator-nuttx/pull/5017#discussion_r773343212
##########
File path: drivers/serial/serial.c
##########
@@ -1332,12 +1333,28 @@ static int uart_ioctl(FAR struct file *filep, int cmd,
unsigned long arg)
}
break;
-#ifdef CONFIG_SERIAL_TERMIOS
case TCFLSH:
{
/* Empty the tx/rx buffers */
- irqstate_t flags = enter_critical_section();
+ irqstate_t flags;
+
+ /* tcdrain is a cancellation point */
+
+ if (enter_cancellation_point())
Review comment:
According to the latest version of the Open Group standard, `tcdrain` is
required to be a thread cancellation point:
https://pubs.opengroup.org/onlinepubs/9699919799/functions/V2_chap02.html#tag_15_09_05_02
So, strictly speaking, the most correct would be to set the cancellation
point inside `tcdrain()`.
Even so, it wouldn't compromise the points raised by @xiaoxiang781216, since
it would still continue to be a userspace wrapper around the `TCDRN` ioctl call.
--
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]