|
|
|
@ -221,92 +221,6 @@ void line_set_termios(struct tty_struct *tty, struct ktermios * old) |
|
|
|
|
/* nothing */ |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static const struct { |
|
|
|
|
int cmd; |
|
|
|
|
char *level; |
|
|
|
|
char *name; |
|
|
|
|
} tty_ioctls[] = { |
|
|
|
|
/* don't print these, they flood the log ... */ |
|
|
|
|
{ TCGETS, NULL, "TCGETS" }, |
|
|
|
|
{ TCSETS, NULL, "TCSETS" }, |
|
|
|
|
{ TCSETSW, NULL, "TCSETSW" }, |
|
|
|
|
{ TCFLSH, NULL, "TCFLSH" }, |
|
|
|
|
{ TCSBRK, NULL, "TCSBRK" }, |
|
|
|
|
|
|
|
|
|
/* general tty stuff */ |
|
|
|
|
{ TCSETSF, KERN_DEBUG, "TCSETSF" }, |
|
|
|
|
{ TCGETA, KERN_DEBUG, "TCGETA" }, |
|
|
|
|
{ TIOCMGET, KERN_DEBUG, "TIOCMGET" }, |
|
|
|
|
{ TCSBRKP, KERN_DEBUG, "TCSBRKP" }, |
|
|
|
|
{ TIOCMSET, KERN_DEBUG, "TIOCMSET" }, |
|
|
|
|
|
|
|
|
|
/* linux-specific ones */ |
|
|
|
|
{ TIOCLINUX, KERN_INFO, "TIOCLINUX" }, |
|
|
|
|
{ KDGKBMODE, KERN_INFO, "KDGKBMODE" }, |
|
|
|
|
{ KDGKBTYPE, KERN_INFO, "KDGKBTYPE" }, |
|
|
|
|
{ KDSIGACCEPT, KERN_INFO, "KDSIGACCEPT" }, |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
int line_ioctl(struct tty_struct *tty, unsigned int cmd, |
|
|
|
|
unsigned long arg) |
|
|
|
|
{ |
|
|
|
|
int ret; |
|
|
|
|
int i; |
|
|
|
|
|
|
|
|
|
ret = 0; |
|
|
|
|
switch(cmd) { |
|
|
|
|
#ifdef TIOCGETP |
|
|
|
|
case TIOCGETP: |
|
|
|
|
case TIOCSETP: |
|
|
|
|
case TIOCSETN: |
|
|
|
|
#endif |
|
|
|
|
#ifdef TIOCGETC |
|
|
|
|
case TIOCGETC: |
|
|
|
|
case TIOCSETC: |
|
|
|
|
#endif |
|
|
|
|
#ifdef TIOCGLTC |
|
|
|
|
case TIOCGLTC: |
|
|
|
|
case TIOCSLTC: |
|
|
|
|
#endif |
|
|
|
|
/* Note: these are out of date as we now have TCGETS2 etc but this
|
|
|
|
|
whole lot should probably go away */ |
|
|
|
|
case TCGETS: |
|
|
|
|
case TCSETSF: |
|
|
|
|
case TCSETSW: |
|
|
|
|
case TCSETS: |
|
|
|
|
case TCGETA: |
|
|
|
|
case TCSETAF: |
|
|
|
|
case TCSETAW: |
|
|
|
|
case TCSETA: |
|
|
|
|
case TCXONC: |
|
|
|
|
case TCFLSH: |
|
|
|
|
case TIOCOUTQ: |
|
|
|
|
case TIOCINQ: |
|
|
|
|
case TIOCGLCKTRMIOS: |
|
|
|
|
case TIOCSLCKTRMIOS: |
|
|
|
|
case TIOCPKT: |
|
|
|
|
case TIOCGSOFTCAR: |
|
|
|
|
case TIOCSSOFTCAR: |
|
|
|
|
return -ENOIOCTLCMD; |
|
|
|
|
#if 0 |
|
|
|
|
case TCwhatever: |
|
|
|
|
/* do something */ |
|
|
|
|
break; |
|
|
|
|
#endif |
|
|
|
|
default: |
|
|
|
|
for (i = 0; i < ARRAY_SIZE(tty_ioctls); i++) |
|
|
|
|
if (cmd == tty_ioctls[i].cmd) |
|
|
|
|
break; |
|
|
|
|
if (i == ARRAY_SIZE(tty_ioctls)) { |
|
|
|
|
printk(KERN_ERR "%s: %s: unknown ioctl: 0x%x\n", |
|
|
|
|
__func__, tty->name, cmd); |
|
|
|
|
} |
|
|
|
|
ret = -ENOIOCTLCMD; |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
return ret; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void line_throttle(struct tty_struct *tty) |
|
|
|
|
{ |
|
|
|
|
struct line *line = tty->driver_data; |
|
|
|
|