[PATCH 02/13] cyclic: introduce u-boot/schedule.h

Stefan Roese sr at denx.de
Tue Oct 22 13:11:05 CEST 2024


On 10/3/24 23:27, Rasmus Villemoes wrote:
> I noticed an "unnecessary" include of <cyclic.h> in
> global_data.h, in the sense that nothing in cyclic.h is needed in
> order to define 'struct global_data'.
> 
> Well, it's not unnecessary, as it implicitly ensures that everybody
> gets a declaration of schedule(), and schedule() is (obviously) called
> all over the tree. Almost none of those places directly include
> <cyclic.h>, but for historical reasons, many do include
> <watchdog.h> (most schedule() instances are replacements of
> WATCHDOG_RESET()).
> 
> However, very few TUs actually need the declarations of the
> cyclic_register() and struct cyclic_info, and they also don't really
> need anything from the watchdog.h header.
> 
> So introduce a new header which just contains a declaration of
> schedule(), which can then be included from all the places that do
> call schedule(). I removed the direct reference to cyclic_run(),
> because we shouldn't have two public functions for doing roughly the
> same without being very explicit about when one should call one or the
> other.
> 
> Testing of later patches that explicitly include <schedule.h> when
> schedule() is used revealed a problem with host tool build on win32,
> which apparently picked up a host <schedule.h>. To avoid that problem,
> put the new header in include/u-boot/ and hence make the include
> statements say <u-boot/schedule.h>.
> 
> Signed-off-by: Rasmus Villemoes <ravi at prevas.dk>

Reviewed-by: Stefan Roese <sr at denx.de>

Thanks,
Stefan

> ---
>   common/cyclic.c           |  1 +
>   include/cyclic.h          | 12 +-----------
>   include/u-boot/schedule.h | 24 ++++++++++++++++++++++++
>   3 files changed, 26 insertions(+), 11 deletions(-)
>   create mode 100644 include/u-boot/schedule.h
> 
> diff --git a/common/cyclic.c b/common/cyclic.c
> index ec38fad6775..38d815bec35 100644
> --- a/common/cyclic.c
> +++ b/common/cyclic.c
> @@ -15,6 +15,7 @@
>   #include <linux/errno.h>
>   #include <linux/list.h>
>   #include <asm/global_data.h>
> +#include <u-boot/schedule.h>
>   
>   DECLARE_GLOBAL_DATA_PTR;
>   
> diff --git a/include/cyclic.h b/include/cyclic.h
> index cd95b691d48..e8de616dcd5 100644
> --- a/include/cyclic.h
> +++ b/include/cyclic.h
> @@ -13,6 +13,7 @@
>   
>   #include <linux/list.h>
>   #include <asm/types.h>
> +#include <u-boot/schedule.h> // to be removed later
>   
>   /**
>    * struct cyclic_info - Information about cyclic execution function
> @@ -94,13 +95,6 @@ struct hlist_head *cyclic_get_list(void);
>    */
>   void cyclic_run(void);
>   
> -/**
> - * schedule() - Schedule all potentially waiting tasks
> - *
> - * Basically a wrapper for cyclic_run(), pontentially enhanced by some
> - * other parts, that need to get handled periodically.
> - */
> -void schedule(void);
>   #else
>   
>   static inline void cyclic_register(struct cyclic_info *cyclic, cyclic_func_t func,
> @@ -116,10 +110,6 @@ static inline void cyclic_run(void)
>   {
>   }
>   
> -static inline void schedule(void)
> -{
> -}
> -
>   static inline int cyclic_unregister_all(void)
>   {
>   	return 0;
> diff --git a/include/u-boot/schedule.h b/include/u-boot/schedule.h
> new file mode 100644
> index 00000000000..4fd34c41229
> --- /dev/null
> +++ b/include/u-boot/schedule.h
> @@ -0,0 +1,24 @@
> +/* SPDX-License-Identifier: GPL-2.0+ */
> +
> +#ifndef _U_BOOT_SCHEDULE_H
> +#define _U_BOOT_SCHEDULE_H
> +
> +#if CONFIG_IS_ENABLED(CYCLIC)
> +/**
> + * schedule() - Schedule all potentially waiting tasks
> + *
> + * Run all pending tasks registered via the cyclic framework, and
> + * potentially perform other actions that need to be done
> + * periodically.
> + */
> +void schedule(void);
> +
> +#else
> +
> +static inline void schedule(void)
> +{
> +}
> +
> +#endif
> +
> +#endif

Viele Grüße,
Stefan Roese

-- 
DENX Software Engineering GmbH,      Managing Director: Erika Unter
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