anchao opened a new pull request, #18486:
URL: https://github.com/apache/nuttx/pull/18486
## Summary
sched/tickless: Fix CLOCK_MONOTONIC always 0 by updating sched ticks
Fix the issue where clock_gettime(CLOCK_MONOTONIC) always returns 0 in
tickless mode, caused by the scheduler tick counter (g_system_ticks) not
being updated with the actual timer ticks.
1. Add clock_update_sched_ticks() function to
sched/clock/clock_sched_ticks.c:
a. This function directly sets the system tick counter to a specific value
(vs incrementing in clock_increase_sched_ticks), with full documentation
matching the existing code style.
b. Uses seqlock to ensure thread-safe access to g_system_ticks.
2. Call clock_update_sched_ticks() in nxsched_process_timer()
(sched_processtickless.c):
a. Syncs the scheduler tick counter with the actual timer ticks retrieved
via up_timer_gettick().
With this fix, g_system_ticks is properly updated in tickless mode,
and clock_gettime(CLOCK_MONOTONIC) returns the correct non-zero monotonic
time.
Signed-off-by: chao an <[email protected]>
## Impact
sched/tickless
## Testing
sim/nsh:
enable config:
+CONFIG_SCHED_TICKLESS=y
+CONFIG_SYSLOG_TIMESTAMP=y
print syslog in exmaple hello:
```
$ git diff .
diff --git a/examples/hello/hello_main.c b/examples/hello/hello_main.c
index fd194a623..c92ec0788 100644
--- a/examples/hello/hello_main.c
+++ b/examples/hello/hello_main.c
@@ -38,5 +38,6 @@
int main(int argc, FAR char *argv[])
{
printf("Hello, World!!\n");
+ syslog(0, "Hello, World!!\n");
return 0;
}
```
Before this patch:
```
nsh> hello
Hello, World!!
[ 0.000000] Hello, World!!
nsh> hello
Hello, World!!
[ 0.000000] Hello, World!!
nsh>
```
after this patch:
```
nsh> hello
Hello, World!!
[ 1.130000] Hello, World!!
nsh> hello
Hello, World!!
[ 2.420000] Hello, World!!
nsh>
```
--
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]