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_COMPONENTHARDWARE_TIMER_INTERFACESHARDWARE_TIMER_ATTRIBUTESHARDWARE_TIMER_COMPOSITIONHARDWARE_TIMER_CONFIGRight 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.