aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/tty_driver.h
diff options
context:
space:
mode:
authorAndrea Bastoni <bastoni@cs.unc.edu>2011-08-27 09:43:54 -0400
committerAndrea Bastoni <bastoni@cs.unc.edu>2011-08-27 10:06:11 -0400
commit7b1bb388bc879ffcc6c69b567816d5c354afe42b (patch)
tree5a217fdfb0b5e5a327bdcd624506337c1ae1fe32 /include/linux/tty_driver.h
parent7d754596756240fa918b94cd0c3011c77a638987 (diff)
parent02f8c6aee8df3cdc935e9bdd4f2d020306035dbe (diff)
Merge 'Linux v3.0' into Litmus
Some notes: * Litmus^RT scheduling class is the topmost scheduling class (above stop_sched_class). * scheduler_ipi() function (e.g., in smp_reschedule_interrupt()) may increase IPI latencies. * Added path into schedule() to quickly re-evaluate scheduling decision without becoming preemptive again. This used to be a standard path before the removal of BKL. Conflicts: Makefile arch/arm/kernel/calls.S arch/arm/kernel/smp.c arch/x86/include/asm/unistd_32.h arch/x86/kernel/smp.c arch/x86/kernel/syscall_table_32.S include/linux/hrtimer.h kernel/printk.c kernel/sched.c kernel/sched_fair.c
Diffstat (limited to 'include/linux/tty_driver.h')
-rw-r--r--include/linux/tty_driver.h31
1 files changed, 20 insertions, 11 deletions
diff --git a/include/linux/tty_driver.h b/include/linux/tty_driver.h
index b08677982525..9deeac855240 100644
--- a/include/linux/tty_driver.h
+++ b/include/linux/tty_driver.h
@@ -98,16 +98,15 @@
98 * 98 *
99 * Note: Do not call this function directly, call tty_write_room 99 * Note: Do not call this function directly, call tty_write_room
100 * 100 *
101 * int (*ioctl)(struct tty_struct *tty, struct file * file, 101 * int (*ioctl)(struct tty_struct *tty, unsigned int cmd, unsigned long arg);
102 * unsigned int cmd, unsigned long arg);
103 * 102 *
104 * This routine allows the tty driver to implement 103 * This routine allows the tty driver to implement
105 * device-specific ioctl's. If the ioctl number passed in cmd 104 * device-specific ioctls. If the ioctl number passed in cmd
106 * is not recognized by the driver, it should return ENOIOCTLCMD. 105 * is not recognized by the driver, it should return ENOIOCTLCMD.
107 * 106 *
108 * Optional 107 * Optional
109 * 108 *
110 * long (*compat_ioctl)(struct tty_struct *tty, struct file * file, 109 * long (*compat_ioctl)(struct tty_struct *tty,,
111 * unsigned int cmd, unsigned long arg); 110 * unsigned int cmd, unsigned long arg);
112 * 111 *
113 * implement ioctl processing for 32 bit process on 64 bit system 112 * implement ioctl processing for 32 bit process on 64 bit system
@@ -167,12 +166,12 @@
167 * 166 *
168 * void (*hangup)(struct tty_struct *tty); 167 * void (*hangup)(struct tty_struct *tty);
169 * 168 *
170 * This routine notifies the tty driver that it should hangup the 169 * This routine notifies the tty driver that it should hang up the
171 * tty device. 170 * tty device.
172 * 171 *
173 * Optional: 172 * Optional:
174 * 173 *
175 * int (*break_ctl)(struct tty_stuct *tty, int state); 174 * int (*break_ctl)(struct tty_struct *tty, int state);
176 * 175 *
177 * This optional routine requests the tty driver to turn on or 176 * This optional routine requests the tty driver to turn on or
178 * off BREAK status on the RS-232 port. If state is -1, 177 * off BREAK status on the RS-232 port. If state is -1,
@@ -224,14 +223,22 @@
224 * unless the tty also has a valid tty->termiox pointer. 223 * unless the tty also has a valid tty->termiox pointer.
225 * 224 *
226 * Optional: Called under the termios lock 225 * Optional: Called under the termios lock
226 *
227 * int (*get_icount)(struct tty_struct *tty, struct serial_icounter *icount);
228 *
229 * Called when the device receives a TIOCGICOUNT ioctl. Passed a kernel
230 * structure to complete. This method is optional and will only be called
231 * if provided (otherwise EINVAL will be returned).
227 */ 232 */
228 233
229#include <linux/fs.h> 234#include <linux/fs.h>
230#include <linux/list.h> 235#include <linux/list.h>
231#include <linux/cdev.h> 236#include <linux/cdev.h>
237#include <linux/termios.h>
232 238
233struct tty_struct; 239struct tty_struct;
234struct tty_driver; 240struct tty_driver;
241struct serial_icounter_struct;
235 242
236struct tty_operations { 243struct tty_operations {
237 struct tty_struct * (*lookup)(struct tty_driver *driver, 244 struct tty_struct * (*lookup)(struct tty_driver *driver,
@@ -248,9 +255,9 @@ struct tty_operations {
248 void (*flush_chars)(struct tty_struct *tty); 255 void (*flush_chars)(struct tty_struct *tty);
249 int (*write_room)(struct tty_struct *tty); 256 int (*write_room)(struct tty_struct *tty);
250 int (*chars_in_buffer)(struct tty_struct *tty); 257 int (*chars_in_buffer)(struct tty_struct *tty);
251 int (*ioctl)(struct tty_struct *tty, struct file * file, 258 int (*ioctl)(struct tty_struct *tty,
252 unsigned int cmd, unsigned long arg); 259 unsigned int cmd, unsigned long arg);
253 long (*compat_ioctl)(struct tty_struct *tty, struct file * file, 260 long (*compat_ioctl)(struct tty_struct *tty,
254 unsigned int cmd, unsigned long arg); 261 unsigned int cmd, unsigned long arg);
255 void (*set_termios)(struct tty_struct *tty, struct ktermios * old); 262 void (*set_termios)(struct tty_struct *tty, struct ktermios * old);
256 void (*throttle)(struct tty_struct * tty); 263 void (*throttle)(struct tty_struct * tty);
@@ -263,11 +270,13 @@ struct tty_operations {
263 void (*set_ldisc)(struct tty_struct *tty); 270 void (*set_ldisc)(struct tty_struct *tty);
264 void (*wait_until_sent)(struct tty_struct *tty, int timeout); 271 void (*wait_until_sent)(struct tty_struct *tty, int timeout);
265 void (*send_xchar)(struct tty_struct *tty, char ch); 272 void (*send_xchar)(struct tty_struct *tty, char ch);
266 int (*tiocmget)(struct tty_struct *tty, struct file *file); 273 int (*tiocmget)(struct tty_struct *tty);
267 int (*tiocmset)(struct tty_struct *tty, struct file *file, 274 int (*tiocmset)(struct tty_struct *tty,
268 unsigned int set, unsigned int clear); 275 unsigned int set, unsigned int clear);
269 int (*resize)(struct tty_struct *tty, struct winsize *ws); 276 int (*resize)(struct tty_struct *tty, struct winsize *ws);
270 int (*set_termiox)(struct tty_struct *tty, struct termiox *tnew); 277 int (*set_termiox)(struct tty_struct *tty, struct termiox *tnew);
278 int (*get_icount)(struct tty_struct *tty,
279 struct serial_icounter_struct *icount);
271#ifdef CONFIG_CONSOLE_POLL 280#ifdef CONFIG_CONSOLE_POLL
272 int (*poll_init)(struct tty_driver *driver, int line, char *options); 281 int (*poll_init)(struct tty_driver *driver, int line, char *options);
273 int (*poll_get_char)(struct tty_driver *driver, int line); 282 int (*poll_get_char)(struct tty_driver *driver, int line);
@@ -348,7 +357,7 @@ static inline struct tty_driver *tty_driver_kref_get(struct tty_driver *d)
348 * overruns, either.) 357 * overruns, either.)
349 * 358 *
350 * TTY_DRIVER_DYNAMIC_DEV --- if set, the individual tty devices need 359 * TTY_DRIVER_DYNAMIC_DEV --- if set, the individual tty devices need
351 * to be registered with a call to tty_register_driver() when the 360 * to be registered with a call to tty_register_device() when the
352 * device is found in the system and unregistered with a call to 361 * device is found in the system and unregistered with a call to
353 * tty_unregister_device() so the devices will be show up 362 * tty_unregister_device() so the devices will be show up
354 * properly in sysfs. If not set, driver->num entries will be 363 * properly in sysfs. If not set, driver->num entries will be