Re: Appending to message buffer while in ddb

2015-08-04 Thread Eric Badger


On 08/03/2015 03:21 PM, Marcel Moolenaar wrote:

On Aug 3, 2015, at 12:59 PM, Eric Badger eric_bad...@dell.com wrote:

Hi there,

Since r226435, output from kernel printf/log functions is not appended to the message 
buffer when in ddb. The commit message doesn't call this out specifically; instead it 
appears to have been to address double printing to the console while in ddb. I noticed 
this because a ddb script which previously resulted in some things ending up in a 
textdump's msgbuf.txt no longer does so. It may be that the answer is use db_printf 
in ddb, which is ok, but I thought I'd check anyway to see if the aforementioned 
change was indeed intentional, since I wasn't able to dig up any discussion about it.

It’s a direct consequence.



But is it a necessary consequence? For example, would the below patch 
also be acceptable (it's perhaps not the cleanest way to do it, but 
gives the idea)? This way we'll print to the console (once) and, if 
TOLOG is also specified, append to the message buffer. If this is not 
acceptable, then I think all ddb commands not using db_printf (such as 
'show rtc') should be converted to doing so (this might be a good idea 
either way), since their output cannot currently be captured in textdumps.


Thanks,
Eric

diff --git sys/kern/subr_prf.c sys/kern/subr_prf.c
index 4f35838..4739331 100644
--- sys/kern/subr_prf.c
+++ sys/kern/subr_prf.c
@@ -463,19 +463,28 @@ putchar(int c, void *arg)
struct putchar_arg *ap = (struct putchar_arg*) arg;
struct tty *tp = ap-tty;
int flags = ap-flags;
+   int putbuf_done = 0;

/* Don't use the tty code after a panic or while in ddb. */
if (kdb_active) {
if (c != '\0')
cnputc(c);
-   return;
-   }
-
-   if ((flags  TOTTY)  tp != NULL  panicstr == NULL)
-   tty_putchar(tp, c);
+   /* Prevent double printing. */
+   ap-flags = ~(TOCONS);
+   flags = ap-flags;
+   } else {
+   if ((panicstr == NULL)  (flags  TOTTY)  (tp != NULL))
+   tty_putchar(tp, c);

-   if ((flags  (TOCONS | TOLOG))  c != '\0')
-   putbuf(c, ap);
+   if (flags  TOCONS) {
+   putbuf(c, ap);
+   putbuf_done = 1;
+   }
+   }
+   if ((flags  TOLOG)  (putbuf_done == 0)) {
+   if (c != '\0')
+   putbuf(c, ap);
+   }
 }

 /*

___
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to freebsd-current-unsubscr...@freebsd.org

Re: Appending to message buffer while in ddb

2015-08-03 Thread Julian Elischer

On 8/4/15 4:21 AM, Marcel Moolenaar wrote:

On Aug 3, 2015, at 12:59 PM, Eric Badger eric_bad...@dell.com wrote:

Hi there,

Since r226435, output from kernel printf/log functions is not appended to the message 
buffer when in ddb. The commit message doesn't call this out specifically; instead it 
appears to have been to address double printing to the console while in ddb. I noticed 
this because a ddb script which previously resulted in some things ending up in a 
textdump's msgbuf.txt no longer does so. It may be that the answer is use db_printf 
in ddb, which is ok, but I thought I'd check anyway to see if the aforementioned 
change was indeed intentional, since I wasn't able to dig up any discussion about it.

It’s a direct consequence.


and really annoying


--
Marcel Moolenaar
mar...@xcllnt.net



___
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to freebsd-current-unsubscr...@freebsd.org

Re: Appending to message buffer while in ddb

2015-08-03 Thread Julian Elischer

On 8/4/15 11:36 AM, Julian Elischer wrote:

On 8/4/15 4:21 AM, Marcel Moolenaar wrote:
On Aug 3, 2015, at 12:59 PM, Eric Badger eric_bad...@dell.com 
wrote:


Hi there,

Since r226435, output from kernel printf/log functions is not 
appended to the message buffer when in ddb. The commit message 
doesn't call this out specifically; instead it appears to have 
been to address double printing to the console while in ddb. I 
noticed this because a ddb script which previously resulted in 
some things ending up in a textdump's msgbuf.txt no longer does 
so. It may be that the answer is use db_printf in ddb, which is 
ok, but I thought I'd check anyway to see if the aforementioned 
change was indeed intentional, since I wasn't able to dig up any 
discussion about it.

It’s a direct consequence.


and really annoying


though I can understand not wanting to have one's message buffer 
flushed out with new stuff from ddb.


--
Marcel Moolenaar
mar...@xcllnt.net



___
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to 
freebsd-current-unsubscr...@freebsd.org





___
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to freebsd-current-unsubscr...@freebsd.org

Re: Appending to message buffer while in ddb

2015-08-03 Thread Marcel Moolenaar

 On Aug 3, 2015, at 12:59 PM, Eric Badger eric_bad...@dell.com wrote:
 
 Hi there,
 
 Since r226435, output from kernel printf/log functions is not appended to the 
 message buffer when in ddb. The commit message doesn't call this out 
 specifically; instead it appears to have been to address double printing to 
 the console while in ddb. I noticed this because a ddb script which 
 previously resulted in some things ending up in a textdump's msgbuf.txt no 
 longer does so. It may be that the answer is use db_printf in ddb, which is 
 ok, but I thought I'd check anyway to see if the aforementioned change was 
 indeed intentional, since I wasn't able to dig up any discussion about it.

It’s a direct consequence.

--
Marcel Moolenaar
mar...@xcllnt.net



signature.asc
Description: Message signed with OpenPGP using GPGMail