Re: [OpenWrt-Devel] [PATCH procd 7/8] Show the shutdown sequence on the active virtual terminal

2014-10-06 Thread Stam, Michel [FINT]
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-boun...@lists.openwrt.org] On
Behalf Of John Crispin
Sent: Friday, October 03, 2014 18:35 PM
To: openwrt-devel@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.s...@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@lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel
___
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel


Re: [OpenWrt-Devel] [PATCH procd 7/8] Show the shutdown sequence on the active virtual terminal

2014-10-06 Thread John Crispin


On 06/10/2014 15:24, Stam, Michel [FINT] wrote:
 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


inside inittab.c we work out the value of console= on the kernels
cmdline and use the value as basis for setting up console. you could try
to reuse that value to work out actual terminal that the messages should
be printed to.




 
 -Original Message-
 From: openwrt-devel [mailto:openwrt-devel-boun...@lists.openwrt.org] On
 Behalf Of John Crispin
 Sent: Friday, October 03, 2014 18:35 PM
 To: openwrt-devel@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.s...@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@lists.openwrt.org
 https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel
 ___
 openwrt-devel mailing list
 openwrt-devel@lists.openwrt.org
 https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel
 
___
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel


Re: [OpenWrt-Devel] [PATCH procd 7/8] Show the shutdown sequence on the active virtual terminal

2014-10-06 Thread John Crispin


On 06/10/2014 16:47, Stam, Michel [FINT] wrote:
 Hey John,
 
 Ok, I will rework the patch to use that, then repost it.
 
 Kind regards,
 
 Michel Stam


i just had a look, we already have 2 pieces of code for reading values
from the cmdline. can you move the code from init/initd.c and
inittab.c to utils/utils.c and add a function such as
get_cmdline_val(char *name, char *out, int len); that setups up the
regex based on name and returns the value inside out. and then use it
all 3 places please.




 
 -Original Message- From: openwrt-devel
 [mailto:openwrt-devel-boun...@lists.openwrt.org] On Behalf Of John
 Crispin Sent: Monday, October 06, 2014 16:46 PM To:
 openwrt-devel@lists.openwrt.org Subject: Re: [OpenWrt-Devel] [PATCH
 procd 7/8] Show the shutdown sequence on the active virtual
 terminal
 
 
 
 On 06/10/2014 15:24, Stam, Michel [FINT] wrote:
 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
 
 
 inside inittab.c we work out the value of console= on the kernels 
 cmdline and use the value as basis for setting up console. you
 could try to reuse that value to work out actual terminal that the
 messages should be printed to.
 
 
 
 
 
 -Original Message- From: openwrt-devel
 [mailto:openwrt-devel-boun...@lists.openwrt.org] On Behalf Of
 John Crispin Sent: Friday, October 03, 2014 18:35 PM To:
 openwrt-devel@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.s...@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@lists.openwrt.org 
 https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel 
 ___ openwrt-devel
 mailing list openwrt-devel@lists.openwrt.org 
 https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel
 
 ___ openwrt-devel
 mailing list openwrt-devel@lists.openwrt.org 
 https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel 
 ___ openwrt-devel
 mailing list openwrt-devel@lists.openwrt.org 
 https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel
 
___
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel


Re: [OpenWrt-Devel] [PATCH procd 7/8] Show the shutdown sequence on the active virtual terminal

2014-10-06 Thread Stam, Michel [FINT]
Hey John, 

Ok, I will rework the patch to use that, then repost it.

Kind regards,

Michel Stam

-Original Message-
From: openwrt-devel [mailto:openwrt-devel-boun...@lists.openwrt.org] On
Behalf Of John Crispin
Sent: Monday, October 06, 2014 16:46 PM
To: openwrt-devel@lists.openwrt.org
Subject: Re: [OpenWrt-Devel] [PATCH procd 7/8] Show the shutdown
sequence on the active virtual terminal



On 06/10/2014 15:24, Stam, Michel [FINT] wrote:
 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


inside inittab.c we work out the value of console= on the kernels
cmdline and use the value as basis for setting up console. you could try
to reuse that value to work out actual terminal that the messages should
be printed to.




 
 -Original Message-
 From: openwrt-devel [mailto:openwrt-devel-boun...@lists.openwrt.org] 
 On Behalf Of John Crispin
 Sent: Friday, October 03, 2014 18:35 PM
 To: openwrt-devel@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.s...@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@lists.openwrt.org
 https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel
 ___
 openwrt-devel mailing list
 openwrt-devel@lists.openwrt.org
 https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel
 
___
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel
___
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel


Re: [OpenWrt-Devel] [PATCH procd 7/8] Show the shutdown sequence on the active virtual terminal

2014-10-03 Thread John Crispin
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.s...@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@lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel


[OpenWrt-Devel] [PATCH procd 7/8] Show the shutdown sequence on the active virtual terminal

2014-10-02 Thread Michel Stam
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.s...@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 );
LOG(- shutdown -\n);
procd_inittab_run(shutdown);
sync();
-- 
1.7.12.1
___
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel