
Dear Wolfgang,
On 04/16/2013 03:05 PM, Wolfgang Denk wrote:
Dear Andreas,
In message 516D4B00.9030102@gmail.com you wrote:
So it is dead code in mainline, and we will not add it.
Well, I don't think it is dead code cause the hang() is called in some ways. This patch opens just the possibility to specialize the hang() by for example a specific board. Maybe this could also be used for specific hang() for different arches when we get closer to the common board files.
I think it is dead code, and not needed nor useful in mainline. I cannot even see how it would be useful for you. hang() is defined to "hang" the CPU, i. e. to make sure the system will remain in the current state. To me this naturally translates into an infinite loop, the implementation of which is completely hardware and architecture independent.
Yes it is independent (or should at least). But there are still slightly different versions:
---8<--- arch/blackfin/lib/board.c:void hang(void) arch/blackfin/lib/board.c-{ arch/blackfin/lib/board.c-#ifdef CONFIG_STATUS_LED arch/blackfin/lib/board.c- status_led_set(STATUS_LED_BOOT, STATUS_LED_OFF); arch/blackfin/lib/board.c- status_led_set(STATUS_LED_CRASH, STATUS_LED_BLINKING); --->8---
---8<--- arch/arm/lib/board.c:void __hang(void) arch/arm/lib/board.c-{ arch/arm/lib/board.c- puts("### ERROR ### Please RESET the board ###\n"); arch/arm/lib/board.c- for (;;); arch/arm/lib/board.c-} --->8---
---8<--- arch/powerpc/lib/board.c:void __hang(void) arch/powerpc/lib/board.c-{ arch/powerpc/lib/board.c- puts("### ERROR ### Please RESET the board ###\n"); arch/powerpc/lib/board.c- bootstage_error(BOOTSTAGE_ID_NEED_RESET); arch/powerpc/lib/board.c- for (;;) --->8---
Note that hang() is not supposed to do anything else, it just hangs the system. If you have a debugger attached, you will be able to do a simple stack backtrace and see exactly where you are hanging, and why.
Well, for this specific board I plan to panic() on wrong hardware detection (which will in turn call hang()). My requirements say that I have to visualize this state then, I thought it would be a good idea to blink some lights in the endless loop in hang() for this specific board.
If you think you need to have specialized code, you are doing something wrong.
Really? How would you solve this requirement?
Best regards
Andreas Bießmann