Download raw body.
powerpc64 boot: echo 1st key
It annoys me that powerpc64 boot doesn't echo the 1st key; I type
"bsd.rd" and see "boot> sd.rd". This is because rdboot turns off ECHO
while waiting 5 seconds for the 1st key. (After 5 seconds, it times
out and boots the default bsd.)
If I turn on ECHO, the 1st key echoes twice: "boot> bbsd.rd".
This diff works for me: getchar, putchar for echo, ungetc(3) before
the next fgets(3). There is a race where the serial port can try to
type a 2nd key before rdboot turns on ECHO. (I always typed by hand
and never pasted a string.) Even so, I guess that echoing 1 key is
better than 0, then is this ok?
--gkoehler
Index: arch/powerpc64/stand//rdboot/cmd.c
===================================================================
RCS file: /cvs/src/sys/arch/powerpc64/stand/rdboot/cmd.c,v
diff -u -p -r1.3 cmd.c
--- arch/powerpc64/stand//rdboot/cmd.c 8 Aug 2024 13:59:11 -0000 1.3
+++ arch/powerpc64/stand//rdboot/cmd.c 21 Aug 2025 00:31:26 -0000
@@ -252,7 +252,7 @@ readline(char *buf, size_t n, int to)
struct timeval tv;
fd_set fdset;
char *p;
- int timed_out = 0;
+ int c, timed_out = 0;
#ifdef DEBUG
extern int debug;
#endif
@@ -271,6 +271,10 @@ readline(char *buf, size_t n, int to)
tv.tv_usec = 0;
if (select(STDIN_FILENO + 1, &fdset, NULL, NULL, &tv) == 0)
timed_out = 1;
+ else if ((c = getchar()) != EOF) {
+ putchar(c); /* Echo. */
+ ungetc(c, stdin);
+ }
/* Restore canonical mode. */
tcsetattr(STDIN_FILENO, TCSANOW, &saved_tio);
powerpc64 boot: echo 1st key