This is a CAmkES component that is intended to abstract over a platform's timer and multiplex client access to it.
There are currently no dependencies for this component.
For clients to use the functionality exposed by the component, the clients will need to be connected to this CAmkES interface using the seL4TimeServer
connector.
provides Timer the_timer;
The component also exposes a CAmkES emits interface which can be connected to clients with the seL4GlobalAsynchCallback
connector to allow a callback to be automatically called on the client's side when the component signals a timeout has occurred.
emits Notification timer_notification;
The timers_per_client
attribute can also be set to a maximum limit of active timers for all clients.
Currently, this component supports the following platforms:
Additional platforms require a corresponding timer driver to be implemented in the libplatsupport library of the util_libs
repository, and the following CPP defintions to be created in the include
folder of this component:
HARDWARE_TIMER_COMPONENT
HARDWARE_TIMER_INTERFACES
HARDWARE_TIMER_ATTRIBUTES
HARDWARE_TIMER_COMPOSITION
HARDWARE_TIMER_CONFIG
Right now, some of the timer drivers assume that the clocks for the timers are initialised (at least for ARM and possibly RISC V platforms). This is mainly a side-effect of boards being booted by U-Boot which handles the clock initialisation.