[PATCH 04/14] initcall: Adjust the loop logic

Simon Glass sjg at chromium.org
Tue Aug 22 05:16:51 CEST 2023


Use a variable to hold the function, so we don't need to repeat the
pointer access each time. Rename the init pointer to 'ptr' since we only
refer to it in the for() statement now.

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

 lib/initcall.c | 24 ++++++++++++------------
 1 file changed, 12 insertions(+), 12 deletions(-)

diff --git a/lib/initcall.c b/lib/initcall.c
index 89a68b2444fe..81c5d2450735 100644
--- a/lib/initcall.c
+++ b/lib/initcall.c
@@ -33,25 +33,25 @@ static ulong calc_reloc_ofs(void)
 int initcall_run_list(const init_fnc_t init_sequence[])
 {
 	ulong reloc_ofs = calc_reloc_ofs();
-	const init_fnc_t *init_fnc_ptr;
+	const init_fnc_t *ptr;
+	init_fnc_t func;
+	int ret = 0;
 
-	for (init_fnc_ptr = init_sequence; *init_fnc_ptr; ++init_fnc_ptr) {
-		int ret;
-
-		if (reloc_ofs)
+	for (ptr = init_sequence; func = *ptr, !ret && func; ptr++) {
+		if (reloc_ofs) {
 			debug("initcall: %p (relocated to %p)\n",
-			      (char *)*init_fnc_ptr - reloc_ofs,
-			      (char *)*init_fnc_ptr);
-		else
-			debug("initcall: %p\n", (char *)*init_fnc_ptr - reloc_ofs);
+			      (char *)func - reloc_ofs, func);
+		} else {
+			debug("initcall: %p\n", (char *)func - reloc_ofs);
+		}
 
-		ret = (*init_fnc_ptr)();
+		ret = func();
 		if (ret) {
 			printf("initcall sequence %p failed at call %p (err=%d)\n",
-			       init_sequence,
-			       (char *)*init_fnc_ptr - reloc_ofs, ret);
+			       init_sequence, (char *)func - reloc_ofs, ret);
 			return -1;
 		}
 	}
+
 	return 0;
 }
-- 
2.42.0.rc1.204.g551eb34607-goog



More information about the U-Boot mailing list