# HG changeset patch # User Toomas Soome # Date 1509630140 -7200 # Node ID 4c0bc9b7139567d4a023a597215ceae554be93cb # Parent 996d7a50ea16a9775696528364e67bc8bc3455f7 10200 loader: spinconsole updates Reviewed by: Andy Fiddaman Reviewed by: John Levon Approved by: Dan McDonald diff -r 996d7a50ea16 -r 4c0bc9b71395 usr/src/boot/sys/boot/i386/libi386/spinconsole.c --- a/usr/src/boot/sys/boot/i386/libi386/spinconsole.c Thu Jan 26 02:46:55 2017 +0200 +++ b/usr/src/boot/sys/boot/i386/libi386/spinconsole.c Thu Nov 02 15:42:20 2017 +0200 @@ -63,46 +63,64 @@ static void spinc_probe(struct console *cp) { - cp->c_flags |= (C_PRESENTIN | C_PRESENTOUT); + int i; + struct console *parent; + + if (cp->c_private == NULL) { + for (i = 0; consoles[i] != NULL; i++) + if (strcmp(consoles[i]->c_name, "text") == 0) + break; + cp->c_private = consoles[i]; + } + + parent = cp->c_private; + if (parent != NULL) + parent->c_probe(cp); } static int -spinc_init(struct console *cp __unused, int arg __unused) +spinc_init(struct console *cp, int arg) { - return(0); + struct console *parent; + + parent = cp->c_private; + if (parent != NULL) + return (parent->c_init(cp, arg)); + else + return (0); } static void -spinc_putchar(struct console *cp __unused, int c __unused) +spinc_putchar(struct console *cp, int c __unused) { static unsigned tw_chars = 0x5C2D2F7C; /* "\-/|" */ - static time_t lasttime; - int i; + static time_t lasttime = 0; + struct console *parent; time_t now; now = time(NULL); if (now < (lasttime + 1)) return; lasttime = now; - for (i = 0; consoles[i] != NULL; i++) - if (strcmp(consoles[i]->c_name, "text") == 0) - break; - if (consoles[i] == NULL) + parent = cp->c_private; + if (parent == NULL) return; - consoles[i]->c_out(consoles[i], (char)tw_chars); - consoles[i]->c_out(consoles[i], '\b'); + parent->c_out(parent, (char)tw_chars); + parent->c_out(parent, '\b'); tw_chars = (tw_chars >> 8) | ((tw_chars & (unsigned long)0xFF) << 24); } static int spinc_getchar(struct console *cp __unused) { - return(-1); + + return (-1); } static int spinc_ischar(struct console *cp __unused) { - return(0); + + return (0); }