Tue Aug 18 02:02:58 2009 UTC ()
add the video ioctls so that the 32 bit skype works with video
more commits to come


(christos)
diff -r1.12 -r1.13 src/sys/compat/linux32/common/linux32_ioctl.c

cvs diff -r1.12 -r1.13 src/sys/compat/linux32/common/linux32_ioctl.c (expand / switch to unified diff)

--- src/sys/compat/linux32/common/linux32_ioctl.c 2008/11/19 18:36:04 1.12
+++ src/sys/compat/linux32/common/linux32_ioctl.c 2009/08/18 02:02:58 1.13
@@ -1,14 +1,14 @@ @@ -1,14 +1,14 @@
1/* $NetBSD: linux32_ioctl.c,v 1.12 2008/11/19 18:36:04 ad Exp $ */ 1/* $NetBSD: linux32_ioctl.c,v 1.13 2009/08/18 02:02:58 christos Exp $ */
2 2
3/*- 3/*-
4 * Copyright (c) 2006 Emmanuel Dreyfus, all rights reserved. 4 * Copyright (c) 2006 Emmanuel Dreyfus, all rights reserved.
5 * 5 *
6 * Redistribution and use in source and binary forms, with or without 6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions 7 * modification, are permitted provided that the following conditions
8 * are met: 8 * are met:
9 * 1. Redistributions of source code must retain the above copyright 9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer. 10 * notice, this list of conditions and the following disclaimer.
11 * 2. Redistributions in binary form must reproduce the above copyright 11 * 2. Redistributions in binary form must reproduce the above copyright
12 * notice, this list of conditions and the following disclaimer in the 12 * notice, this list of conditions and the following disclaimer in the
13 * documentation and/or other materials provided with the distribution. 13 * documentation and/or other materials provided with the distribution.
14 * 3. All advertising materials mentioning features or use of this software 14 * 3. All advertising materials mentioning features or use of this software
@@ -22,32 +22,33 @@ @@ -22,32 +22,33 @@
22 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,  22 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
23 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 23 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
24 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS  24 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS
25 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 25 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
26 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 26 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
27 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 27 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
28 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 28 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
29 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 29 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
30 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 30 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
31 * POSSIBILITY OF SUCH DAMAGE. 31 * POSSIBILITY OF SUCH DAMAGE.
32 */ 32 */
33 33
34#include <sys/cdefs.h> 34#include <sys/cdefs.h>
35__KERNEL_RCSID(0, "$NetBSD: linux32_ioctl.c,v 1.12 2008/11/19 18:36:04 ad Exp $"); 35__KERNEL_RCSID(0, "$NetBSD: linux32_ioctl.c,v 1.13 2009/08/18 02:02:58 christos Exp $");
36 36
37#include <sys/types.h> 37#include <sys/types.h>
38#include <sys/param.h> 38#include <sys/param.h>
39#include <sys/time.h> 39#include <sys/time.h>
40#include <sys/ucred.h> 40#include <sys/ucred.h>
 41#include <sys/ioctl.h>
41 42
42#include <compat/netbsd32/netbsd32.h> 43#include <compat/netbsd32/netbsd32.h>
43#include <compat/netbsd32/netbsd32_syscallargs.h> 44#include <compat/netbsd32/netbsd32_syscallargs.h>
44 45
45#include <compat/linux/common/linux_types.h> 46#include <compat/linux/common/linux_types.h>
46#include <compat/linux/common/linux_signal.h> 47#include <compat/linux/common/linux_signal.h>
47#include <compat/linux/common/linux_ipc.h> 48#include <compat/linux/common/linux_ipc.h>
48#include <compat/linux/common/linux_sem.h> 49#include <compat/linux/common/linux_sem.h>
49#include <compat/linux/linux_syscallargs.h> 50#include <compat/linux/linux_syscallargs.h>
50 51
51#include <compat/linux32/common/linux32_types.h> 52#include <compat/linux32/common/linux32_types.h>
52#include <compat/linux32/common/linux32_signal.h> 53#include <compat/linux32/common/linux32_signal.h>
53#include <compat/linux32/common/linux32_ioctl.h> 54#include <compat/linux32/common/linux32_ioctl.h>
@@ -92,26 +93,43 @@ linux32_sys_ioctl(struct lwp *l, const s @@ -92,26 +93,43 @@ linux32_sys_ioctl(struct lwp *l, const s
92 error = oss_ioctl_mixer(l, &ossuap, retval); 93 error = oss_ioctl_mixer(l, &ossuap, retval);
93 break; 94 break;
94 case 'Q': 95 case 'Q':
95 error = oss_ioctl_sequencer(l, &ossuap, retval); 96 error = oss_ioctl_sequencer(l, &ossuap, retval);
96 break; 97 break;
97 case 'P': 98 case 'P':
98 error = oss_ioctl_audio(l, &ossuap, retval); 99 error = oss_ioctl_audio(l, &ossuap, retval);
99 break; 100 break;
100 default: 101 default:
101 error = EINVAL; /* shutup gcc */ 102 error = EINVAL; /* shutup gcc */
102 break; 103 break;
103 } 104 }
104 break; 105 break;
 106 case 'V': /* video4linux2 */
 107 case 'd': /* drm */
 108 {
 109 struct sys_ioctl_args ua;
 110 u_long com = 0;
 111 if (SCARG(uap, com) & IOC_IN)
 112 com |= IOC_OUT;
 113 if (SCARG(uap, com) & IOC_OUT)
 114 com |= IOC_IN;
 115 SCARG(&ua, fd) = SCARG(uap, fd);
 116 SCARG(&ua, com) = SCARG(uap, com);
 117 SCARG(&ua, com) &= ~IOC_DIRMASK;
 118 SCARG(&ua, com) |= com;
 119 SCARG(&ua, data) = SCARG_P32(uap, data);
 120 error = sys_ioctl(l, (const void *)&ua, retval);
 121 break;
 122 }
105 case 0x89: 123 case 0x89:
106 error = linux32_ioctl_socket(l, uap, retval); 124 error = linux32_ioctl_socket(l, uap, retval);
107 break; 125 break;
108 default: 126 default:
109 printf("Not yet implemented ioctl group \'%c\'\n", group); 127 printf("Not yet implemented ioctl group \'%c\'\n", group);
110 error = EINVAL; 128 error = EINVAL;
111 break; 129 break;
112 } 130 }
113 131
114 if (error == EPASSTHROUGH) 132 if (error == EPASSTHROUGH)
115 error = EINVAL; 133 error = EINVAL;
116 134
117 return error; 135 return error;