wangchdo commented on code in PR #17308:
URL: https://github.com/apache/nuttx/pull/17308#discussion_r2516662038


##########
sched/wdog/wd_start.c:
##########
@@ -313,6 +313,32 @@ int wd_start_abstick(FAR struct wdog_s *wdog, clock_t 
ticks,
 
   reassess |= wd_insert(wdog, ticks, wdentry, arg);
 
+  /* If the new watchdog expiration time is earlier than the current system
+   * time, trigger a timer interrupt manually. This ensures that the system
+   * processes the watchdog immediately instead of waiting for the next tick.
+   */
+
+  if (clock_compare(wdog->expired, clock_systime_ticks()))
+    {
+#  ifdef CONFIG_ARCH_HAVE_IRQTRIGGER
+      if (up_timer_trigger() != OK)

Review Comment:
   The problem for the zero delay is: If you read the timer count, and was 
interrupted before setting the  timeout using the timer count, the count to be 
used can still be earlier than the current time count, even if no irq, if the 
timer goes too fast, this is still a problem...
   
   Anyway this is a rare case, but it  could happen, and is very serious if it 
happened



-- 
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]

Reply via email to