Skip to content
  • Philippe Gerum's avatar
    cobalt/kernel: introduce external clock support · 28eb37c8
    Philippe Gerum authored
    This patch introduces a mechanism for registering external clocks
    dynamically, in addition to Xenomai's built-in core clock
    (nkclock). Each external clock may drive Xenomai timers (struct
    xntimer) using the common timer infrastructure.
    
    Xenomai's core clock has nanosecond resolution; it is paced by the
    platform timer (which is driven by the interrupt pipeline).
    
    External clocks are driven by arbitrary timer sources, directly
    managed by the client code.
    
    Each clock provides an internal interface with the timer support code,
    through a set of common operations (e.g. reading time, converting time
    values, programming the next shot if applicable).
    
    The external interface is pretty simple:
    
    - xnclock_register() for instantiating a new clock
    - xnclock_deregister() for dropping an existing clock
    - xnclock_tick() for signaling an incoming tick, so that
      timers driven by the clock are elapsed appropriately.
    
    Since we may now have multiple clocks, each driving their ow...
    28eb37c8