[U-Boot] ctrl-c detection (on 4xx platforms)

Matthias Fuchs matthias.fuchs at esd-electronics.com
Thu Sep 11 17:23:53 CEST 2008


Hi,

I noticed some strange CTRL-C behavior in a BSP command. 
When I run my bsp command interactively everything is fine.
The command waits for a condition and displays a rotating cursor
(see board/esd/common/cmd_loadpci.c):

...
int do_loadpci(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
{
	...
	char str[] = "\\|/-";
	...

	while(1) {
		...
		*ptr = 0xffffffff;
		puts("\nWaiting for action from pci host -");

		/*
		 * Wait for host to write the start address
		 */
		while (*ptr == 0xffffffff) {
			count++;
			if (!(count % 100)) {
				count2++;
				putc(0x08); /* backspace */
				putc(str[count2 % 4]);
			}

			/* Abort if ctrl-c was pressed */
			if (ctrlc()) {
				puts("\nAbort\n");
				return 0;
			}

			udelay(1000);
		}
	}
	...
}

But when I call this bsp command as bootcmd CTRL-C does not stop the while loop. So CTRL-C 
is not detected. Any idea?

Matthias


More information about the U-Boot mailing list