Lines Matching refs:disc
46 /* Line disc dispatch table */
51 * @disc: ldisc number
62 int tty_register_ldisc(int disc, struct tty_ldisc_ops *new_ldisc)
67 if (disc < N_TTY || disc >= NR_LDISCS)
71 tty_ldiscs[disc] = new_ldisc;
72 new_ldisc->num = disc;
82 * @disc: ldisc number
91 int tty_unregister_ldisc(int disc)
96 if (disc < N_TTY || disc >= NR_LDISCS)
100 if (tty_ldiscs[disc]->refcount)
103 tty_ldiscs[disc] = NULL;
110 static struct tty_ldisc_ops *get_ldops(int disc)
117 ldops = tty_ldiscs[disc];
141 * @disc: ldisc number
161 static struct tty_ldisc *tty_ldisc_get(struct tty_struct *tty, int disc)
166 if (disc < N_TTY || disc >= NR_LDISCS)
173 ldops = get_ldops(disc);
177 request_module("tty-ldisc-%d", disc);
178 ldops = get_ldops(disc);
424 * @disc: line discipline number
437 static void tty_set_termios_ldisc(struct tty_struct *tty, int disc)
440 tty->termios.c_line = disc;
504 struct tty_ldisc *disc = tty_ldisc_get(tty, ld);
508 if (IS_ERR(disc))
509 return PTR_ERR(disc);
510 tty->ldisc = disc;
512 if ((r = tty_ldisc_open(tty, disc)) < 0)
513 tty_ldisc_put(disc);
545 * @disc: the line discipline number
553 int tty_set_ldisc(struct tty_struct *tty, int disc)
558 new_ldisc = tty_ldisc_get(tty, disc);
573 if (tty->ldisc->ops->num == disc)
589 tty_set_termios_ldisc(tty, disc);
663 * @disc: line discipline to reinitialize
674 int tty_ldisc_reinit(struct tty_struct *tty, int disc)
680 ld = tty_ldisc_get(tty, disc);
682 BUG_ON(disc == N_TTY);
693 tty_set_termios_ldisc(tty, disc);