Re: [PATCH 2/7] tty: core: Add tty_debug() for printk(KERN_DEBUG) messages
On Wed, Aug 05, 2015 at 02:33:37PM -0400, Peter Hurley wrote: > On 07/23/2015 09:35 PM, Greg Kroah-Hartman wrote: > > On Sun, Jul 12, 2015 at 10:49:08PM -0400, Peter Hurley wrote: > >> Introduce tty_debug() macro to output uniform debug information for > >> tty core debug messages (function name and tty name). > >> > >> Note: printk(KERN_DEBUG) is retained here over pr_debug() since > >> messages can be enabled in non-DEBUG builds. > > > > But pr_debug() is the "standard" way to enable/disable debugging > > messages, so I'd really like to see that be used here. > > Ok, I can do that; I'll roll Joe's suggestions in at that time. > > > Even better, this is a tty device, so it should be using dev_dbg(), > > which gives us tons of good information built-in for the tty and can > > properly be parsed by userspace tools to know exactly what device caused > > what message at what point in time. > > > > So I'll take this for now, but moving it to use dev_dbg() would be best > > eventually. > > The issue with using dev_dbg is that (SysV) ptys are not devices. True :( > However, > if you'd prefer, I could rework this macro to format output like dev_dbg; > ie., : That would be good, as that's what userspace is expecting the messages to look like. thanks, greg k-h -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH 2/7] tty: core: Add tty_debug() for printk(KERN_DEBUG) messages
On 07/23/2015 09:35 PM, Greg Kroah-Hartman wrote: > On Sun, Jul 12, 2015 at 10:49:08PM -0400, Peter Hurley wrote: >> Introduce tty_debug() macro to output uniform debug information for >> tty core debug messages (function name and tty name). >> >> Note: printk(KERN_DEBUG) is retained here over pr_debug() since >> messages can be enabled in non-DEBUG builds. > > But pr_debug() is the "standard" way to enable/disable debugging > messages, so I'd really like to see that be used here. Ok, I can do that; I'll roll Joe's suggestions in at that time. > Even better, this is a tty device, so it should be using dev_dbg(), > which gives us tons of good information built-in for the tty and can > properly be parsed by userspace tools to know exactly what device caused > what message at what point in time. > > So I'll take this for now, but moving it to use dev_dbg() would be best > eventually. The issue with using dev_dbg is that (SysV) ptys are not devices. However, if you'd prefer, I could rework this macro to format output like dev_dbg; ie., : Regards, Peter Hurley -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH 2/7] tty: core: Add tty_debug() for printk(KERN_DEBUG) messages
On Sun, Jul 12, 2015 at 10:49:08PM -0400, Peter Hurley wrote: > Introduce tty_debug() macro to output uniform debug information for > tty core debug messages (function name and tty name). > > Note: printk(KERN_DEBUG) is retained here over pr_debug() since > messages can be enabled in non-DEBUG builds. But pr_debug() is the "standard" way to enable/disable debugging messages, so I'd really like to see that be used here. Even better, this is a tty device, so it should be using dev_dbg(), which gives us tons of good information built-in for the tty and can properly be parsed by userspace tools to know exactly what device caused what message at what point in time. So I'll take this for now, but moving it to use dev_dbg() would be best eventually. thanks, greg k-h -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH 2/7] tty: core: Add tty_debug() for printk(KERN_DEBUG) messages
On 07/13/2015 12:30 AM, Joe Perches wrote: > On Mon, 2015-07-13 at 00:25 -0400, Peter Hurley wrote: >> On 07/12/2015 11:47 PM, Joe Perches wrote: >>> On Sun, 2015-07-12 at 22:49 -0400, Peter Hurley wrote: Introduce tty_debug() macro to output uniform debug information for tty core debug messages (function name and tty name). >>> [] diff --git a/drivers/tty/tty_io.c b/drivers/tty/tty_io.c >>> [] @@ -768,7 +768,7 @@ static void do_tty_hangup(struct work_struct *work) void tty_hangup(struct tty_struct *tty) { #ifdef TTY_DEBUG_HANGUP - printk(KERN_DEBUG "%s hangup...\n", tty_name(tty)); + tty_debug(tty, "\n"); >>> >>> Why drop the "hangup..." ? >> >> tty_debug() prints the function name; in this case, tty_hangup(). > > maybe that #ifdef/#endif block could/should be removed The #ifdef/#endif block is removed in the follow-on patch 3/7; replaced with tty_debug_hangup(). > and the function tracer used to track this instead. One of the advantages of the single macro site of tty_debug is that I can blow in trace_printk() instead when necessary. But still leave mainline as printk's. Regards, Peter Hurley -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH 2/7] tty: core: Add tty_debug() for printk(KERN_DEBUG) messages
On Mon, 2015-07-13 at 00:25 -0400, Peter Hurley wrote: > On 07/12/2015 11:47 PM, Joe Perches wrote: > > On Sun, 2015-07-12 at 22:49 -0400, Peter Hurley wrote: > >> Introduce tty_debug() macro to output uniform debug information for > >> tty core debug messages (function name and tty name). > > [] > >> diff --git a/drivers/tty/tty_io.c b/drivers/tty/tty_io.c > > [] > >> @@ -768,7 +768,7 @@ static void do_tty_hangup(struct work_struct *work) > >> void tty_hangup(struct tty_struct *tty) > >> { > >> #ifdef TTY_DEBUG_HANGUP > >> - printk(KERN_DEBUG "%s hangup...\n", tty_name(tty)); > >> + tty_debug(tty, "\n"); > > > > Why drop the "hangup..." ? > > tty_debug() prints the function name; in this case, tty_hangup(). maybe that #ifdef/#endif block could/should be removed and the function tracer used to track this instead. cheers, Joe -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH 2/7] tty: core: Add tty_debug() for printk(KERN_DEBUG) messages
On 07/12/2015 11:47 PM, Joe Perches wrote: > On Sun, 2015-07-12 at 22:49 -0400, Peter Hurley wrote: >> Introduce tty_debug() macro to output uniform debug information for >> tty core debug messages (function name and tty name). > [] >> diff --git a/drivers/tty/tty_io.c b/drivers/tty/tty_io.c > [] >> @@ -768,7 +768,7 @@ static void do_tty_hangup(struct work_struct *work) >> void tty_hangup(struct tty_struct *tty) >> { >> #ifdef TTY_DEBUG_HANGUP >> -printk(KERN_DEBUG "%s hangup...\n", tty_name(tty)); >> +tty_debug(tty, "\n"); > > Why drop the "hangup..." ? tty_debug() prints the function name; in this case, tty_hangup(). >> diff --git a/include/linux/tty.h b/include/linux/tty.h > [] >> +#define tty_debug(tty, f, args...) \ >> +do {\ >> +printk(KERN_DEBUG "%s: %s: " f, __func__, \ >> + tty_name(tty), ##args); \ >> +} while (0) > > Single statement macros don't need do {} while (0) Ah, yep. Old hold-over from when tty_name() needed a temp buffer. > #define fmt, ... > using fmt, ##__VA_ARGS__ > > is more common. Ok. Regards, Peter Hurley -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH 2/7] tty: core: Add tty_debug() for printk(KERN_DEBUG) messages
On Sun, 2015-07-12 at 22:49 -0400, Peter Hurley wrote: > Introduce tty_debug() macro to output uniform debug information for > tty core debug messages (function name and tty name). [] > diff --git a/drivers/tty/tty_io.c b/drivers/tty/tty_io.c [] > @@ -768,7 +768,7 @@ static void do_tty_hangup(struct work_struct *work) > void tty_hangup(struct tty_struct *tty) > { > #ifdef TTY_DEBUG_HANGUP > - printk(KERN_DEBUG "%s hangup...\n", tty_name(tty)); > + tty_debug(tty, "\n"); Why drop the "hangup..." ? > diff --git a/include/linux/tty.h b/include/linux/tty.h [] > +#define tty_debug(tty, f, args...) \ > + do {\ > + printk(KERN_DEBUG "%s: %s: " f, __func__, \ > +tty_name(tty), ##args); \ > + } while (0) Single statement macros don't need do {} while (0) #define fmt, ... using fmt, ##__VA_ARGS__ is more common. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[PATCH 2/7] tty: core: Add tty_debug() for printk(KERN_DEBUG) messages
Introduce tty_debug() macro to output uniform debug information for tty core debug messages (function name and tty name). Note: printk(KERN_DEBUG) is retained here over pr_debug() since messages can be enabled in non-DEBUG builds. Signed-off-by: Peter Hurley --- drivers/tty/tty_io.c | 41 + include/linux/tty.h | 6 ++ 2 files changed, 23 insertions(+), 24 deletions(-) diff --git a/drivers/tty/tty_io.c b/drivers/tty/tty_io.c index 2d9811a..6de2c36 100644 --- a/drivers/tty/tty_io.c +++ b/drivers/tty/tty_io.c @@ -524,8 +524,8 @@ static void __proc_set_tty(struct tty_struct *tty) spin_unlock_irqrestore(&tty->ctrl_lock, flags); tty->session = get_pid(task_session(current)); if (current->signal->tty) { - printk(KERN_DEBUG "%s: %s: current tty %s not NULL!!\n", - __func__, tty->name, current->signal->tty->name); + tty_debug(tty, "current tty %s not NULL!!\n", + current->signal->tty->name); tty_kref_put(current->signal->tty); } put_pid(current->signal->tty_old_pgrp); @@ -768,7 +768,7 @@ static void do_tty_hangup(struct work_struct *work) void tty_hangup(struct tty_struct *tty) { #ifdef TTY_DEBUG_HANGUP - printk(KERN_DEBUG "%s hangup...\n", tty_name(tty)); + tty_debug(tty, "\n"); #endif schedule_work(&tty->hangup_work); } @@ -787,7 +787,7 @@ EXPORT_SYMBOL(tty_hangup); void tty_vhangup(struct tty_struct *tty) { #ifdef TTY_DEBUG_HANGUP - printk(KERN_DEBUG "%s vhangup...\n", tty_name(tty)); + tty_debug(tty, "\n") #endif __tty_hangup(tty, 0); } @@ -826,7 +826,7 @@ void tty_vhangup_self(void) static void tty_vhangup_session(struct tty_struct *tty) { #ifdef TTY_DEBUG_HANGUP - printk(KERN_DEBUG "%s vhangup session...\n", tty_name(tty)); + tty_debug(tty, "\n"); #endif __tty_hangup(tty, 1); } @@ -923,7 +923,7 @@ void disassociate_ctty(int on_exit) tty_kref_put(tty); } else { #ifdef TTY_DEBUG_HANGUP - printk(KERN_DEBUG "%s: no current tty\n", __func__); + tty_debug(tty, "no current tty\n"); #endif } @@ -1705,8 +1705,7 @@ static int tty_release_checks(struct tty_struct *tty, int idx) { #ifdef TTY_PARANOIA_CHECK if (idx < 0 || idx >= tty->driver->num) { - printk(KERN_DEBUG "%s: %s: bad idx %d\n", - __func__, tty->name, idx); + tty_debug(tty, "bad idx %d\n", idx); return -1; } @@ -1715,22 +1714,20 @@ static int tty_release_checks(struct tty_struct *tty, int idx) return 0; if (tty != tty->driver->ttys[idx]) { - printk(KERN_DEBUG "%s: %s: bad driver table[%d] = %p\n", - __func__, tty->name, idx, tty->driver->ttys[idx]); + tty_debug(tty, "bad driver table[%d] = %p\n", + idx, tty->driver->ttys[idx]); return -1; } if (tty->driver->other) { struct tty_struct *o_tty = tty->link; if (o_tty != tty->driver->other->ttys[idx]) { - printk(KERN_DEBUG "%s: %s: bad other table[%d] = %p\n", - __func__, tty->name, idx, - tty->driver->other->ttys[idx]); + tty_debug(tty, "bad other table[%d] = %p\n", + idx, tty->driver->other->ttys[idx]); return -1; } if (o_tty->link != tty) { - printk(KERN_DEBUG "%s: %s: bad link = %p\n", - __func__, tty->name, o_tty->link); + tty_debug(tty, "bad link = %p\n", o_tty->link); return -1; } } @@ -1785,8 +1782,7 @@ int tty_release(struct inode *inode, struct file *filp) } #ifdef TTY_DEBUG_HANGUP - printk(KERN_DEBUG "%s: %s (tty count=%d)...\n", __func__, - tty_name(tty), tty->count); + tty_debug(tty, "(tty count=%d)...\n", tty->count); #endif if (tty->ops->close) @@ -1898,7 +1894,7 @@ int tty_release(struct inode *inode, struct file *filp) return 0; #ifdef TTY_DEBUG_HANGUP - printk(KERN_DEBUG "%s: %s: final close\n", __func__, tty_name(tty)); + tty_debug(tty, "final close\n"); #endif /* * Ask the line discipline code to release its structures @@ -1909,8 +1905,7 @@ int tty_release(struct inode *inode, struct file *filp) tty_flush_works(tty); #ifdef TTY_DEBUG_HANGUP - printk(KERN_DEBUG "%s: %s: freeing structure...\n", __func__, - tty_name(tty)); + tty_debug(tty, "freeing structure...\n"); #endif /* * The release_tty function takes care of the details of clearing @@ -2101,8 +2096,7 @@ retry