[PATCH 2/5] cyclic: drop redundant cyclic_ready flag

Rasmus Villemoes rasmus.villemoes at prevas.dk
Fri Oct 28 13:50:51 CEST 2022


We're already relying on gd->cyclic being NULL before cyclic_init() is
called - i.e., we're relying on all of gd being zeroed before entering
any C code. And when we do populate gd->cyclic, its ->cyclic_ready
member is automatically set to true. So we can actually just rely on
testing gd->cyclic itself.

The only wrinkle is that cyclic_uninit() actually did set
->cyclic_ready to false. However, since it doesn't free gd->cyclic,
the cyclic infrastructure is actually still ready (i.e., the list_head
is properly initialized as an empty list).

Signed-off-by: Rasmus Villemoes <rasmus.villemoes at prevas.dk>
---
 common/cyclic.c  | 6 ++----
 include/cyclic.h | 2 --
 2 files changed, 2 insertions(+), 6 deletions(-)

diff --git a/common/cyclic.c b/common/cyclic.c
index ff75c8cadb..d6f11b002e 100644
--- a/common/cyclic.c
+++ b/common/cyclic.c
@@ -30,7 +30,7 @@ struct cyclic_info *cyclic_register(cyclic_func_t func, uint64_t delay_us,
 {
 	struct cyclic_info *cyclic;
 
-	if (!gd->cyclic->cyclic_ready) {
+	if (!gd->cyclic) {
 		pr_debug("Cyclic IF not ready yet\n");
 		return NULL;
 	}
@@ -112,7 +112,7 @@ void schedule(void)
 	 * schedule() might get called very early before the cyclic IF is
 	 * ready. Make sure to only call cyclic_run() when it's initalized.
 	 */
-	if (gd && gd->cyclic && gd->cyclic->cyclic_ready)
+	if (gd && gd->cyclic)
 		cyclic_run();
 }
 
@@ -122,7 +122,6 @@ int cyclic_uninit(void)
 
 	list_for_each_entry_safe(cyclic, tmp, &gd->cyclic->cyclic_list, list)
 		cyclic_unregister(cyclic);
-	gd->cyclic->cyclic_ready = false;
 
 	return 0;
 }
@@ -137,7 +136,6 @@ int cyclic_init(void)
 
 	memset(gd->cyclic, '\0', size);
 	INIT_LIST_HEAD(&gd->cyclic->cyclic_list);
-	gd->cyclic->cyclic_ready = true;
 
 	return 0;
 }
diff --git a/include/cyclic.h b/include/cyclic.h
index 50427baa3f..263b74d89b 100644
--- a/include/cyclic.h
+++ b/include/cyclic.h
@@ -18,11 +18,9 @@
  * struct cyclic_drv - Cyclic driver internal data
  *
  * @cyclic_list: Cylic list node
- * @cyclic_ready: Flag if cyclic infrastructure is ready
  */
 struct cyclic_drv {
 	struct list_head cyclic_list;
-	bool cyclic_ready;
 };
 
 /**
-- 
2.37.2



More information about the U-Boot mailing list