[PATCH 0/7] Add support for cyclic function execution infrastruture
Stefan Roese
sr at denx.de
Mon Jul 25 10:39:11 CEST 2022
Hi Tom,
On 25.05.22 09:40, Stefan Roese wrote:
> This patchset adds 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?
> This patchset 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.
>
> Ideas how to continue:
> One idea is to rename WATCHDOG_RESET to something like SCHEDULE and
> move the watchdog_reset call into this cyclic infrastructure as well.
> Or to perhaps move the shell UART RX ready polling to a cyclic
> function.
>
> It's also possible to extend the "cyclic" command, to support the
> creation of periodically executed shell commands (for testing etc).
>
> Thanks,
> Stefan
Tom, did you find the time to take a look at this series? What are
you ideas / plans with it? I would very much like to get it merged
as one of it's pro's is, providing the base for bigger cleanups in
the current WATCHDOG_RESET mess in U-Boot at some time.
Thanks,
Stefan
> Aaron Williams (1):
> mips: octeon_nic23: Add PCIe FLR fixup via cyclic infrastructure
>
> Stefan Roese (6):
> time: Import time_after64() and friends from Linux
> cyclic: Add basic support for cyclic function execution infrastruture
> cyclic: Integrate cyclic infrastructure into WATCHDOG_RESET
> cyclic: Integrate cyclic functionality at bootup in board_r/f
> cyclic: Add 'cyclic list' command
> sandbox: Add cyclic demo function
>
> MAINTAINERS | 7 +
> board/Marvell/octeon_nic23/board.c | 197 +++++++++++++++++++++++++++++
> board/sandbox/sandbox.c | 15 +++
> cmd/Kconfig | 6 +
> cmd/Makefile | 1 +
> cmd/cyclic.c | 40 ++++++
> common/Kconfig | 22 ++++
> common/Makefile | 1 +
> common/board_f.c | 2 +
> common/board_r.c | 2 +
> common/cyclic.c | 112 ++++++++++++++++
> configs/octeon_nic23_defconfig | 3 +
> configs/sandbox_defconfig | 2 +
> fs/cramfs/uncompress.c | 2 +-
> include/cyclic.h | 84 ++++++++++++
> include/time.h | 19 +++
> include/watchdog.h | 23 +++-
> 17 files changed, 534 insertions(+), 4 deletions(-)
> create mode 100644 cmd/cyclic.c
> create mode 100644 common/cyclic.c
> create mode 100644 include/cyclic.h
>
Viele Grüße,
Stefan Roese
--
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-51 Fax: (+49)-8142-66989-80 Email: sr at denx.de
More information about the U-Boot
mailing list