aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux
diff options
context:
space:
mode:
authorPaul Fulghum <paulkf@microgate.com>2007-05-11 01:22:50 -0400
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2007-05-11 11:29:35 -0400
commite10cc1df1d2014f68a4bdcf73f6dd122c4561f94 (patch)
treee528fde48ca3b09168d8879a57fb220195c4e8ea /include/linux
parent108f39a1b3b1e4b28ca8cc156f06171445499d21 (diff)
tty: add compat_ioctl
Add compat_ioctl method for tty code to allow processing of 32 bit ioctl calls on 64 bit systems by tty core, tty drivers, and line disciplines. Based on patch by Arnd Bergmann: http://www.uwsg.iu.edu/hypermail/linux/kernel/0511.0/1732.html [akpm@linux-foundation.org: make things static] Signed-off-by: Paul Fulghum <paulkf@microgate.com> Acked-by: Arnd Bergmann <arnd@arndb.de> Cc: Alan Cox <alan@lxorguk.ukuu.org.uk> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/tty_driver.h9
-rw-r--r--include/linux/tty_ldisc.h7
2 files changed, 16 insertions, 0 deletions
diff --git a/include/linux/tty_driver.h b/include/linux/tty_driver.h
index 659487e3ebeb..85c95cd39bc3 100644
--- a/include/linux/tty_driver.h
+++ b/include/linux/tty_driver.h
@@ -52,6 +52,11 @@
52 * This routine allows the tty driver to implement 52 * This routine allows the tty driver to implement
53 * device-specific ioctl's. If the ioctl number passed in cmd 53 * device-specific ioctl's. If the ioctl number passed in cmd
54 * is not recognized by the driver, it should return ENOIOCTLCMD. 54 * is not recognized by the driver, it should return ENOIOCTLCMD.
55 *
56 * long (*compat_ioctl)(struct tty_struct *tty, struct file * file,
57 * unsigned int cmd, unsigned long arg);
58 *
59 * implement ioctl processing for 32 bit process on 64 bit system
55 * 60 *
56 * void (*set_termios)(struct tty_struct *tty, struct ktermios * old); 61 * void (*set_termios)(struct tty_struct *tty, struct ktermios * old);
57 * 62 *
@@ -132,6 +137,8 @@ struct tty_operations {
132 int (*chars_in_buffer)(struct tty_struct *tty); 137 int (*chars_in_buffer)(struct tty_struct *tty);
133 int (*ioctl)(struct tty_struct *tty, struct file * file, 138 int (*ioctl)(struct tty_struct *tty, struct file * file,
134 unsigned int cmd, unsigned long arg); 139 unsigned int cmd, unsigned long arg);
140 long (*compat_ioctl)(struct tty_struct *tty, struct file * file,
141 unsigned int cmd, unsigned long arg);
135 void (*set_termios)(struct tty_struct *tty, struct ktermios * old); 142 void (*set_termios)(struct tty_struct *tty, struct ktermios * old);
136 void (*throttle)(struct tty_struct * tty); 143 void (*throttle)(struct tty_struct * tty);
137 void (*unthrottle)(struct tty_struct * tty); 144 void (*unthrottle)(struct tty_struct * tty);
@@ -193,6 +200,8 @@ struct tty_driver {
193 int (*chars_in_buffer)(struct tty_struct *tty); 200 int (*chars_in_buffer)(struct tty_struct *tty);
194 int (*ioctl)(struct tty_struct *tty, struct file * file, 201 int (*ioctl)(struct tty_struct *tty, struct file * file,
195 unsigned int cmd, unsigned long arg); 202 unsigned int cmd, unsigned long arg);
203 long (*compat_ioctl)(struct tty_struct *tty, struct file * file,
204 unsigned int cmd, unsigned long arg);
196 void (*set_termios)(struct tty_struct *tty, struct ktermios * old); 205 void (*set_termios)(struct tty_struct *tty, struct ktermios * old);
197 void (*throttle)(struct tty_struct * tty); 206 void (*throttle)(struct tty_struct * tty);
198 void (*unthrottle)(struct tty_struct * tty); 207 void (*unthrottle)(struct tty_struct * tty);
diff --git a/include/linux/tty_ldisc.h b/include/linux/tty_ldisc.h
index d75932e27710..6226504d9108 100644
--- a/include/linux/tty_ldisc.h
+++ b/include/linux/tty_ldisc.h
@@ -59,6 +59,11 @@
59 * low-level driver can "grab" an ioctl request before the line 59 * low-level driver can "grab" an ioctl request before the line
60 * discpline has a chance to see it. 60 * discpline has a chance to see it.
61 * 61 *
62 * long (*compat_ioctl)(struct tty_struct * tty, struct file * file,
63 * unsigned int cmd, unsigned long arg);
64 *
65 * Process ioctl calls from 32-bit process on 64-bit system
66 *
62 * void (*set_termios)(struct tty_struct *tty, struct ktermios * old); 67 * void (*set_termios)(struct tty_struct *tty, struct ktermios * old);
63 * 68 *
64 * This function notifies the line discpline that a change has 69 * This function notifies the line discpline that a change has
@@ -118,6 +123,8 @@ struct tty_ldisc {
118 const unsigned char * buf, size_t nr); 123 const unsigned char * buf, size_t nr);
119 int (*ioctl)(struct tty_struct * tty, struct file * file, 124 int (*ioctl)(struct tty_struct * tty, struct file * file,
120 unsigned int cmd, unsigned long arg); 125 unsigned int cmd, unsigned long arg);
126 long (*compat_ioctl)(struct tty_struct * tty, struct file * file,
127 unsigned int cmd, unsigned long arg);
121 void (*set_termios)(struct tty_struct *tty, struct ktermios * old); 128 void (*set_termios)(struct tty_struct *tty, struct ktermios * old);
122 unsigned int (*poll)(struct tty_struct *, struct file *, 129 unsigned int (*poll)(struct tty_struct *, struct file *,
123 struct poll_table_struct *); 130 struct poll_table_struct *);