[PATCH v3 2/8] cyclic: Add basic support for cyclic function execution infrastruture

Simon Glass sjg at chromium.org
Fri Aug 5 18:48:29 CEST 2022


Hi Stefan,

On Fri, 5 Aug 2022 at 08:26, Stefan Roese <sr at denx.de> wrote:
>
> Add the basic infrastructure to periodically execute code, e.g. all
> 100ms. Examples for such functions might be LED blinking etc. The
> functions that are hooked into this cyclic list should be small timewise
> as otherwise the execution of the other code that relies on a high
> frequent polling (e.g. UART rx char ready check) might be delayed too
> much. This patch also adds the Kconfig option
> CONFIG_CYCLIC_MAX_CPU_TIME_US, which configures the max allowed time
> for such a cyclic function. If it's execution time exceeds this time,
> this cyclic function will get removed from the cyclic list.
>
> How is this cyclic functionality executed?
> The following patch integrates the main function responsible for
> calling all registered cyclic functions cyclic_run() into the
> common WATCHDOG_RESET macro. This guarantees that cyclic_run() is
> executed very often, which is necessary for the cyclic functions to
> get scheduled and executed at their configured periods.
>
> This cyclic infrastructure will be used by a board specific function on
> the NIC23 MIPS Octeon board, which needs to check periodically, if a
> PCIe FLR has occurred.
>
> Signed-off-by: Stefan Roese <sr at denx.de>
> ---
> v3:
> - No change
> v2:
> - Also add cyclic_register() and cyclic_unregister() as empty functions
>   when CONFIG_CYCLIC is not defined
> - Misc minor changes
>
>  MAINTAINERS      |   6 +++
>  common/Kconfig   |  20 +++++++++
>  common/Makefile  |   1 +
>  common/cyclic.c  | 112 +++++++++++++++++++++++++++++++++++++++++++++++
>  include/cyclic.h |  97 ++++++++++++++++++++++++++++++++++++++++
>  5 files changed, 236 insertions(+)
>  create mode 100644 common/cyclic.c
>  create mode 100644 include/cyclic.h

Reviewed-by: Simon Glass <sjg at chromium.org>

Can you document cyclic_struct - and perhaps 'struct cyclic_info' for
'struct cyclic' would be better so we don't have 'struct' in a struct?

I still do see a lot of commonality with events.

Regards,
Simon


More information about the U-Boot mailing list