Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
ioctl.c
Go to the documentation of this file.
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 
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 
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 }