| .. | .. |
|---|
| 54 | 54 | * low-level driver can "grab" an ioctl request before the line |
|---|
| 55 | 55 | * discpline has a chance to see it. |
|---|
| 56 | 56 | * |
|---|
| 57 | | - * long (*compat_ioctl)(struct tty_struct * tty, struct file * file, |
|---|
| 57 | + * int (*compat_ioctl)(struct tty_struct * tty, struct file * file, |
|---|
| 58 | 58 | * unsigned int cmd, unsigned long arg); |
|---|
| 59 | 59 | * |
|---|
| 60 | 60 | * Process ioctl calls from 32-bit process on 64-bit system |
|---|
| 61 | + * |
|---|
| 62 | + * NOTE: only ioctls that are neither "pointer to compatible |
|---|
| 63 | + * structure" nor tty-generic. Something private that takes |
|---|
| 64 | + * an integer or a pointer to wordsize-sensitive structure |
|---|
| 65 | + * belongs here, but most of ldiscs will happily leave |
|---|
| 66 | + * it NULL. |
|---|
| 61 | 67 | * |
|---|
| 62 | 68 | * void (*set_termios)(struct tty_struct *tty, struct ktermios * old); |
|---|
| 63 | 69 | * |
|---|
| .. | .. |
|---|
| 120 | 126 | #include <linux/fs.h> |
|---|
| 121 | 127 | #include <linux/wait.h> |
|---|
| 122 | 128 | #include <linux/atomic.h> |
|---|
| 129 | +#include <linux/android_kabi.h> |
|---|
| 123 | 130 | |
|---|
| 124 | 131 | /* |
|---|
| 125 | 132 | * the semaphore definition |
|---|
| .. | .. |
|---|
| 179 | 186 | void (*close)(struct tty_struct *); |
|---|
| 180 | 187 | void (*flush_buffer)(struct tty_struct *tty); |
|---|
| 181 | 188 | ssize_t (*read)(struct tty_struct *tty, struct file *file, |
|---|
| 182 | | - unsigned char __user *buf, size_t nr); |
|---|
| 189 | + unsigned char *buf, size_t nr, |
|---|
| 190 | + void **cookie, unsigned long offset); |
|---|
| 183 | 191 | ssize_t (*write)(struct tty_struct *tty, struct file *file, |
|---|
| 184 | 192 | const unsigned char *buf, size_t nr); |
|---|
| 185 | 193 | int (*ioctl)(struct tty_struct *tty, struct file *file, |
|---|
| 186 | 194 | unsigned int cmd, unsigned long arg); |
|---|
| 187 | | - long (*compat_ioctl)(struct tty_struct *tty, struct file *file, |
|---|
| 195 | + int (*compat_ioctl)(struct tty_struct *tty, struct file *file, |
|---|
| 188 | 196 | unsigned int cmd, unsigned long arg); |
|---|
| 189 | 197 | void (*set_termios)(struct tty_struct *tty, struct ktermios *old); |
|---|
| 190 | 198 | __poll_t (*poll)(struct tty_struct *, struct file *, |
|---|
| .. | .. |
|---|
| 204 | 212 | struct module *owner; |
|---|
| 205 | 213 | |
|---|
| 206 | 214 | int refcount; |
|---|
| 215 | + |
|---|
| 216 | + ANDROID_KABI_RESERVE(1); |
|---|
| 217 | + ANDROID_KABI_RESERVE(2); |
|---|
| 207 | 218 | }; |
|---|
| 208 | 219 | |
|---|
| 209 | 220 | struct tty_ldisc { |
|---|