73 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			73 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /*
 | |
|  *    Implements some necessary HPUX ioctls.
 | |
|  *
 | |
|  *    Copyright (C) 1999-2002 Matthew Wilcox <willy with parisc-linux.org>
 | |
|  *
 | |
|  *    This program is free software; you can redistribute it and/or modify
 | |
|  *    it under the terms of the GNU General Public License as published by
 | |
|  *    the Free Software Foundation; either version 2 of the License, or
 | |
|  *    (at your option) any later version.
 | |
|  *
 | |
|  *    This program is distributed in the hope that it will be useful,
 | |
|  *    but WITHOUT ANY WARRANTY; without even the implied warranty of
 | |
|  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | |
|  *    GNU General Public License for more details.
 | |
|  *
 | |
|  *    You should have received a copy of the GNU General Public License
 | |
|  *    along with this program; if not, write to the Free Software
 | |
|  *    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 | |
|  */
 | |
| 
 | |
| /*
 | |
|  * Supported ioctls:
 | |
|  *   TCGETA
 | |
|  *   TCSETA
 | |
|  *   TCSETAW
 | |
|  *   TCSETAF
 | |
|  *   TCSBRK
 | |
|  *   TCXONC
 | |
|  *   TCFLSH
 | |
|  *   TIOCGWINSZ
 | |
|  *   TIOCSWINSZ
 | |
|  *   TIOCGPGRP
 | |
|  *   TIOCSPGRP
 | |
|  */
 | |
| 
 | |
| #include <linux/sched.h>
 | |
| #include <linux/syscalls.h>
 | |
| #include <asm/errno.h>
 | |
| #include <asm/ioctl.h>
 | |
| #include <asm/termios.h>
 | |
| #include <asm/uaccess.h>
 | |
| 
 | |
| static int hpux_ioctl_t(int fd, unsigned long cmd, unsigned long arg)
 | |
| {
 | |
| 	int result = -EOPNOTSUPP;
 | |
| 	int nr = _IOC_NR(cmd);
 | |
| 	switch (nr) {
 | |
| 	case 106:
 | |
| 		result = sys_ioctl(fd, TIOCSWINSZ, arg);
 | |
| 		break;
 | |
| 	case 107:
 | |
| 		result = sys_ioctl(fd, TIOCGWINSZ, arg);
 | |
| 		break;
 | |
| 	}
 | |
| 	return result;
 | |
| }
 | |
| 
 | |
| int hpux_ioctl(int fd, unsigned long cmd, unsigned long arg)
 | |
| {
 | |
| 	int result = -EOPNOTSUPP;
 | |
| 	int type = _IOC_TYPE(cmd);
 | |
| 	switch (type) {
 | |
| 	case 'T':
 | |
| 		/* Our structures are now compatible with HPUX's */
 | |
| 		result = sys_ioctl(fd, cmd, arg);
 | |
| 		break;
 | |
| 	case 't':
 | |
| 		result = hpux_ioctl_t(fd, cmd, arg);
 | |
| 		break;
 | |
| 	}
 | |
| 	return result;
 | |
| }
 |