Merge git://oss.sgi.com:8090/xfs/xfs-2.6
[linux-drm-fsl-dcu.git] / arch / um / include / chan_kern.h
index 22bf3a73437c3dc8af5f253ecff9dfdb155d102e..c4b41bb1035f6f8ef10a193b92bea717650711fc 100644 (file)
 
 struct chan {
        struct list_head list;
+       struct list_head free_list;
+       struct line *line;
        char *dev;
        unsigned int primary:1;
        unsigned int input:1;
        unsigned int output:1;
        unsigned int opened:1;
+       unsigned int enabled:1;
        int fd;
-       struct chan_ops *ops;
+       const struct chan_ops *ops;
        void *data;
 };
 
-extern void chan_interrupt(struct list_head *chans, struct work_struct *task,
+extern void chan_interrupt(struct list_head *chans, struct delayed_work *task,
                           struct tty_struct *tty, int irq);
-extern int parse_chan_pair(char *str, struct list_head *chans, int device,
-                          struct chan_opts *opts);
+extern int parse_chan_pair(char *str, struct line *line, int device,
+                          const struct chan_opts *opts, char **error_out);
 extern int open_chan(struct list_head *chans);
 extern int write_chan(struct list_head *chans, const char *buf, int len,
                             int write_irq);
 extern int console_write_chan(struct list_head *chans, const char *buf, 
                              int len);
-extern int console_open_chan(struct line *line, struct console *co,
-                            struct chan_opts *opts);
-extern void close_chan(struct list_head *chans);
+extern int console_open_chan(struct line *line, struct console *co);
+extern void deactivate_chan(struct list_head *chans, int irq);
+extern void reactivate_chan(struct list_head *chans, int irq);
 extern void chan_enable_winch(struct list_head *chans, struct tty_struct *tty);
-extern void enable_chan(struct list_head *chans, struct tty_struct *tty);
+extern void enable_chan(struct line *line);
+extern void close_chan(struct list_head *chans, int delay_free_irq);
 extern int chan_window_size(struct list_head *chans, 
                             unsigned short *rows_out, 
                             unsigned short *cols_out);