mirror of
https://github.com/torvalds/linux
synced 2024-11-05 18:23:50 +00:00
tty: Add ldisc hangup debug messages
Expected typical debug log: [ 582.721965] tty_open: opening pts3... [ 582.721970] tty_open: opening pts3... [ 582.721977] tty_release: pts3 (tty count=3)... [ 582.721980] tty_release: ptm3 (tty count=1)... [ 582.722015] pts3 vhangup... [ 582.722020] tty_ldisc_hangup: pts3: closing ldisc: ffff88007a920540 [ 582.724128] tty_release: pts3 (tty count=2)... [ 582.724217] tty_ldisc_hangup: pts3: re-opened ldisc: ffff88007a920580 [ 582.724221] tty_release: ptm3: final close [ 582.724234] tty_ldisc_release: ptm3: closing ldisc: ffff88007a920a80 [ 582.724238] tty_ldisc_release: ptm3: ldisc closed [ 582.724241] tty_release: ptm3: freeing structure... [ 582.724741] tty_open: opening pts3... Signed-off-by: Peter Hurley <peter@hurleysoftware.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
96433d104a
commit
fc575ee6ea
1 changed files with 19 additions and 0 deletions
|
@ -20,6 +20,17 @@
|
|||
#include <linux/uaccess.h>
|
||||
#include <linux/ratelimit.h>
|
||||
|
||||
#undef LDISC_DEBUG_HANGUP
|
||||
|
||||
#ifdef LDISC_DEBUG_HANGUP
|
||||
#define tty_ldisc_debug(tty, f, args...) ({ \
|
||||
char __b[64]; \
|
||||
printk(KERN_DEBUG "%s: %s: " f, __func__, tty_name(tty, __b), ##args); \
|
||||
})
|
||||
#else
|
||||
#define tty_ldisc_debug(tty, f, args...)
|
||||
#endif
|
||||
|
||||
/*
|
||||
* This guards the refcounted line discipline lists. The lock
|
||||
* must be taken with irqs off because there are hangup path
|
||||
|
@ -822,6 +833,8 @@ void tty_ldisc_hangup(struct tty_struct *tty)
|
|||
int reset = tty->driver->flags & TTY_DRIVER_RESET_TERMIOS;
|
||||
int err = 0;
|
||||
|
||||
tty_ldisc_debug(tty, "closing ldisc: %p\n", tty->ldisc);
|
||||
|
||||
/*
|
||||
* FIXME! What are the locking issues here? This may me overdoing
|
||||
* things... This question is especially important now that we've
|
||||
|
@ -878,6 +891,8 @@ void tty_ldisc_hangup(struct tty_struct *tty)
|
|||
mutex_unlock(&tty->ldisc_mutex);
|
||||
if (reset)
|
||||
tty_reset_termios(tty);
|
||||
|
||||
tty_ldisc_debug(tty, "re-opened ldisc: %p\n", tty->ldisc);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -944,6 +959,8 @@ void tty_ldisc_release(struct tty_struct *tty, struct tty_struct *o_tty)
|
|||
* it does not race with the set_ldisc code path.
|
||||
*/
|
||||
|
||||
tty_ldisc_debug(tty, "closing ldisc: %p\n", tty->ldisc);
|
||||
|
||||
tty_ldisc_halt(tty, o_tty, MAX_SCHEDULE_TIMEOUT);
|
||||
|
||||
tty_lock_pair(tty, o_tty);
|
||||
|
@ -955,6 +972,8 @@ void tty_ldisc_release(struct tty_struct *tty, struct tty_struct *o_tty)
|
|||
tty_unlock_pair(tty, o_tty);
|
||||
/* And the memory resources remaining (buffers, termios) will be
|
||||
disposed of when the kref hits zero */
|
||||
|
||||
tty_ldisc_debug(tty, "ldisc closed\n");
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Loading…
Reference in a new issue