diff options
author | Paul Fulghum <paulkf@microgate.com> | 2007-05-11 01:22:50 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-05-11 11:29:35 -0400 |
commit | e10cc1df1d2014f68a4bdcf73f6dd122c4561f94 (patch) | |
tree | e528fde48ca3b09168d8879a57fb220195c4e8ea /include/linux | |
parent | 108f39a1b3b1e4b28ca8cc156f06171445499d21 (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.h | 9 | ||||
-rw-r--r-- | include/linux/tty_ldisc.h | 7 |
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 *); |