• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  *    Implements some necessary HPUX ioctls.
3  *
4  *    Copyright (C) 1999-2002 Matthew Wilcox <willy with parisc-linux.org>
5  *
6  *    This program is free software; you can redistribute it and/or modify
7  *    it under the terms of the GNU General Public License as published by
8  *    the Free Software Foundation; either version 2 of the License, or
9  *    (at your option) any later version.
10  *
11  *    This program is distributed in the hope that it will be useful,
12  *    but WITHOUT ANY WARRANTY; without even the implied warranty of
13  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  *    GNU General Public License for more details.
15  *
16  *    You should have received a copy of the GNU General Public License
17  *    along with this program; if not, write to the Free Software
18  *    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
19  */
20 
21 /*
22  * Supported ioctls:
23  *   TCGETA
24  *   TCSETA
25  *   TCSETAW
26  *   TCSETAF
27  *   TCSBRK
28  *   TCXONC
29  *   TCFLSH
30  *   TIOCGWINSZ
31  *   TIOCSWINSZ
32  *   TIOCGPGRP
33  *   TIOCSPGRP
34  */
35 
36 #include <linux/sched.h>
37 #include <linux/syscalls.h>
38 #include <asm/errno.h>
39 #include <asm/ioctl.h>
40 #include <asm/termios.h>
41 #include <asm/uaccess.h>
42 
hpux_ioctl_t(int fd,unsigned long cmd,unsigned long arg)43 static int hpux_ioctl_t(int fd, unsigned long cmd, unsigned long arg)
44 {
45 	int result = -EOPNOTSUPP;
46 	int nr = _IOC_NR(cmd);
47 	switch (nr) {
48 	case 106:
49 		result = sys_ioctl(fd, TIOCSWINSZ, arg);
50 		break;
51 	case 107:
52 		result = sys_ioctl(fd, TIOCGWINSZ, arg);
53 		break;
54 	}
55 	return result;
56 }
57 
hpux_ioctl(int fd,unsigned long cmd,unsigned long arg)58 int hpux_ioctl(int fd, unsigned long cmd, unsigned long arg)
59 {
60 	int result = -EOPNOTSUPP;
61 	int type = _IOC_TYPE(cmd);
62 	switch (type) {
63 	case 'T':
64 		/* Our structures are now compatible with HPUX's */
65 		result = sys_ioctl(fd, cmd, arg);
66 		break;
67 	case 't':
68 		result = hpux_ioctl_t(fd, cmd, arg);
69 		break;
70 	}
71 	return result;
72 }
73