62 releases

0.9.61 Sep 23, 2024
0.9.59 Jun 26, 2024
0.9.54 Feb 6, 2024
0.9.52 Dec 25, 2023
0.9.21 Nov 26, 2022

#311 in Operating systems

Download history 24/week @ 2024-07-01 154/week @ 2024-07-29 122/week @ 2024-09-16 331/week @ 2024-09-23 49/week @ 2024-09-30 5/week @ 2024-10-07 10/week @ 2024-10-14

501 downloads per month
Used in xous-ticktimer

MIT/Apache

320KB
6K SLoC

Xous API: ticktimer

The Xous ticktimer helps other processes track the passage of time through several mechanisms:

  • It can report the elapsed uptime since boot in milliseconds.
  • It can block a process for a specified number of milliseconds.
  • It can block a process until a condition is met (i.e., condvar)

Processes that are blocked by ticktimer are entirely de-scheduled and consume no CPU quantum; the only overhead is a few instructions to check the processes' runnability state in the kernel's simple round-robin thread scheduler. Thus sleep and condvar blocking states are very efficient.

ticktimer's perception of time stops when a system goes into the suspend state; thus on resume, the elapsed time picks up exactly where it left off. Wall-clock time during suspend is tracked by the RTC module.

Xous currently has no notions of thread priority, but if it were to develop one, the ticktimer would be the logical place to implement such a feature, as it has a full view of all the waiting and runnable threads, and it can influence which ones should be unblocked at a given quantum.

Dependencies

~3.5MB
~78K SLoC