^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) /* SPDX-License-Identifier: GPL-2.0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) * Copyright (C) 2000, 2001 Jeff Dike (jdike@karaya.com)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) #ifndef __CHAN_KERN_H__
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) #define __CHAN_KERN_H__
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) #include <linux/tty.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) #include <linux/list.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) #include <linux/console.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) #include "chan_user.h"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) #include "line.h"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) struct chan {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) struct list_head list;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) struct list_head free_list;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) struct line *line;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) char *dev;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) unsigned int primary:1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) unsigned int input:1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) unsigned int output:1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) unsigned int opened:1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) unsigned int enabled:1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) int fd;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) const struct chan_ops *ops;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) void *data;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) extern void chan_interrupt(struct line *line, int irq);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) extern int parse_chan_pair(char *str, struct line *line, int device,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) const struct chan_opts *opts, char **error_out);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) extern int write_chan(struct chan *chan, const char *buf, int len,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) int write_irq);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) extern int console_write_chan(struct chan *chan, const char *buf,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) int len);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) extern int console_open_chan(struct line *line, struct console *co);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) extern void deactivate_chan(struct chan *chan, int irq);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) extern void reactivate_chan(struct chan *chan, int irq);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) extern void chan_enable_winch(struct chan *chan, struct tty_port *port);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) extern int enable_chan(struct line *line);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) extern void close_chan(struct line *line);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) extern int chan_window_size(struct line *line,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) unsigned short *rows_out,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) unsigned short *cols_out);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) extern int chan_config_string(struct line *line, char *str, int size,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) char **error_out);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) #endif