[OpenWrt-Devel] [PATCH procd 7/8] Show the shutdown sequence on the active virtual terminal
Stam, Michel [FINT]
M.Stam at fugro.nl
Mon Oct 6 09:24:17 EDT 2014
Hello John,
We have a tty0 (our board happened to have an x86 processor), the
situation is no different when you're running this with the console port
on the serial port of a router board. The presence of the VT in the
kernel determines if tty0 actually exists. So point taken, I had not
taken that into account.
My point is that i would like to see what is going on when I issue a
reboot on a device. It would be logical to see that on whatever screen
happens to be active at that moment.
Is it acceptable for you if I try and open /dev/tty0 if available, or
use /dev/console otherwise?
Kind regards,
Michel Stam
-----Original Message-----
From: openwrt-devel [mailto:openwrt-devel-bounces at lists.openwrt.org] On
Behalf Of John Crispin
Sent: Friday, October 03, 2014 18:35 PM
To: openwrt-devel at lists.openwrt.org
Subject: Re: [OpenWrt-Devel] [PATCH procd 7/8] Show the shutdown
sequence on the active virtual terminal
see inline
On 02/10/2014 14:56, Michel Stam wrote:
> procd by default writes to /dev/console. When rebooting, this means
> that the terminal on which the reboot sequence was started will not
> see what is going on. This patch fixes that by reopening stdin, stdout
> and stderr to /dev/tty0 upon reboot.
>
> Also, due to (probably) pivot-root, /proc/1/fd shows 1-3 pointing to
> /console. This patch also fixes that.
>
> Signed-off-by: Michel Stam <m.stam at fugro.nl> --- state.c | 13
> +++++++++++++ 1 file changed, 13 insertions(+)
>
> diff --git a/state.c b/state.c index e6c8712..2268de3 100644 ---
> a/state.c +++ b/state.c @@ -12,7 +12,9 @@ * GNU General Public License
> for more details. */
>
> +#include <fcntl.h> #include <sys/reboot.h> +#include <stdio.h>
> #include <stdlib.h> #include <unistd.h> #include <sys/types.h> @@
> -37,6 +39,14 @@ enum { static int state = STATE_NONE; static int
> reboot_event;
>
> +static void set_stdio( const char* tty ) +{ + freopen( tty,
"r",
> stdin ); + freopen( tty, "w", stdout ); + freopen( tty, "w",
stderr
> ); + fcntl(STDERR_FILENO, F_SETFL, fcntl(STDERR_FILENO, F_GETFL) |
> O_NONBLOCK); +} + static void state_enter(void) { char ubus_cmd[] =
> "/sbin/ubusd"; @@ -55,6 +65,7 @@ static void state_enter(void)
> LOG("- ubus -\n"); procd_connect_ubus();
>
> + set_stdio( "/dev/console" ); LOG("- init -\n");
service_init();
> service_start_early("ubus", ubus_cmd); @@ -71,6 +82,8 @@ static void
> state_enter(void) break;
>
> case STATE_SHUTDOWN: + /* Redirect output to the
current virtual
> terminal for the users' benefit */ + set_stdio( "/dev/tty0"
);
tty0 is a virtual console on a desktop. routers don't have a tty0.
this would break all the routers
> LOG("- shutdown -\n"); procd_inittab_run("shutdown"); sync();
>
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel
More information about the openwrt-devel
mailing list