OpenCores
URL https://opencores.org/ocsvn/or1k_old/or1k_old/trunk

Subversion Repositories or1k_old

[/] [or1k_old/] [trunk/] [rc203soc/] [sw/] [uClinux/] [include/] [linux/] [tty_driver.h] - Blame information for rev 1782

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 1633 jcastillo
#ifndef _LINUX_TTY_DRIVER_H
2
#define _LINUX_TTY_DRIVER_H
3
 
4
/*
5
 * This structure defines the interface between the low-level tty
6
 * driver and the tty routines.  The following routines can be
7
 * defined; unless noted otherwise, they are optional, and can be
8
 * filled in with a null pointer.
9
 *
10
 * int  (*open)(struct tty_struct * tty, struct file * filp);
11
 *
12
 *      This routine is called when a particular tty device is opened.
13
 *      This routine is mandatory; if this routine is not filled in,
14
 *      the attempted open will fail with ENODEV.
15
 *
16
 * void (*close)(struct tty_struct * tty, struct file * filp);
17
 *
18
 *      This routine is called when a particular tty device is closed.
19
 *
20
 * int (*write)(struct tty_struct * tty, int from_user,
21
 *               const unsigned char *buf, int count);
22
 *
23
 *      This routine is called by the kernel to write a series of
24
 *      characters to the tty device.  The characters may come from
25
 *      user space or kernel space.  This routine will return the
26
 *      number of characters actually accepted for writing.  This
27
 *      routine is mandatory.
28
 *
29
 * void (*put_char)(struct tty_struct *tty, unsigned char ch);
30
 *
31
 *      This routine is called by the kernel to write a single
32
 *      character to the tty device.  If the kernel uses this routine,
33
 *      it must call the flush_chars() routine (if defined) when it is
34
 *      done stuffing characters into the driver.  If there is no room
35
 *      in the queue, the character is ignored.
36
 *
37
 * void (*flush_chars)(struct tty_struct *tty);
38
 *
39
 *      This routine is called by the kernel after it has written a
40
 *      series of characters to the tty device using put_char().
41
 *
42
 * int  (*write_room)(struct tty_struct *tty);
43
 *
44
 *      This routine returns the numbers of characters the tty driver
45
 *      will accept for queuing to be written.  This number is subject
46
 *      to change as output buffers get emptied, or if the output flow
47
 *      control is acted.
48
 *
49
 * int  (*ioctl)(struct tty_struct *tty, struct file * file,
50
 *          unsigned int cmd, unsigned long arg);
51
 *
52
 *      This routine allows the tty driver to implement
53
 *      device-specific ioctl's.  If the ioctl number passed in cmd
54
 *      is not recognized by the driver, it should return ENOIOCTLCMD.
55
 *
56
 * void (*set_termios)(struct tty_struct *tty, struct termios * old);
57
 *
58
 *      This routine allows the tty driver to be notified when
59
 *      device's termios settings have changed.  Note that a
60
 *      well-designed tty driver should be prepared to accept the case
61
 *      where old == NULL, and try to do something rational.
62
 *
63
 * void (*set_ldisc)(struct tty_struct *tty);
64
 *
65
 *      This routine allows the tty driver to be notified when the
66
 *      device's termios settings have changed.
67
 *
68
 * void (*throttle)(struct tty_struct * tty);
69
 *
70
 *      This routine notifies the tty driver that input buffers for
71
 *      the line discipline are close to full, and it should somehow
72
 *      signal that no more characters should be sent to the tty.
73
 *
74
 * void (*unthrottle)(struct tty_struct * tty);
75
 *
76
 *      This routine notifies the tty drivers that it should signals
77
 *      that characters can now be sent to the tty without fear of
78
 *      overrunning the input buffers of the line disciplines.
79
 *
80
 * void (*stop)(struct tty_struct *tty);
81
 *
82
 *      This routine notifies the tty driver that it should stop
83
 *      outputting characters to the tty device.
84
 *
85
 * void (*start)(struct tty_struct *tty);
86
 *
87
 *      This routine notifies the tty driver that it resume sending
88
 *      characters to the tty device.
89
 *
90
 * void (*hangup)(struct tty_struct *tty);
91
 *
92
 *      This routine notifies the tty driver that it should hangup the
93
 *      tty device.
94
 *
95
 */
96
 
97
#include <linux/fs.h>
98
 
99
struct tty_driver {
100
        int     magic;          /* magic number for this structure */
101
        const char      *name;
102
        int     name_base;      /* offset of printed name */
103
        short   major;          /* major device number */
104
        short   minor_start;    /* start of minor device number*/
105
        short   num;            /* number of devices */
106
        short   type;           /* type of tty driver */
107
        short   subtype;        /* subtype of tty driver */
108
        struct termios init_termios; /* Initial termios */
109
        int     flags;          /* tty driver flags */
110
        int     *refcount;      /* for loadable tty drivers */
111
        struct tty_driver *other; /* only used for the PTY driver */
112
 
113
        /*
114
         * Pointer to the tty data structures
115
         */
116
        struct tty_struct **table;
117
        struct termios **termios;
118
        struct termios **termios_locked;
119
 
120
        /*
121
         * Interface routines from the upper tty layer to the tty
122
         * driver.
123
         */
124
        int  (*open)(struct tty_struct * tty, struct file * filp);
125
        void (*close)(struct tty_struct * tty, struct file * filp);
126
        int  (*write)(struct tty_struct * tty, int from_user,
127
                      const unsigned char *buf, int count);
128
        void (*put_char)(struct tty_struct *tty, unsigned char ch);
129
        void (*flush_chars)(struct tty_struct *tty);
130
        int  (*write_room)(struct tty_struct *tty);
131
        int  (*chars_in_buffer)(struct tty_struct *tty);
132
        int  (*ioctl)(struct tty_struct *tty, struct file * file,
133
                    unsigned int cmd, unsigned long arg);
134
        void (*set_termios)(struct tty_struct *tty, struct termios * old);
135
        void (*throttle)(struct tty_struct * tty);
136
        void (*unthrottle)(struct tty_struct * tty);
137
        void (*stop)(struct tty_struct *tty);
138
        void (*start)(struct tty_struct *tty);
139
        void (*hangup)(struct tty_struct *tty);
140
        void (*flush_buffer)(struct tty_struct *tty);
141
        void (*set_ldisc)(struct tty_struct *tty);
142
 
143
        /*
144
         * linked list pointers
145
         */
146
        struct tty_driver *next;
147
        struct tty_driver *prev;
148
};
149
 
150
/* tty driver magic number */
151
#define TTY_DRIVER_MAGIC                0x5402
152
 
153
/*
154
 * tty driver flags
155
 *
156
 * TTY_DRIVER_RESET_TERMIOS --- requests the tty layer to reset the
157
 *      termios setting when the last process has closed the device.
158
 *      Used for PTY's, in particular.
159
 *
160
 * TTY_DRIVER_REAL_RAW --- if set, indicates that the driver will
161
 *      guarantee never not to set any special character handling
162
 *      flags if ((IGNBRK || (!BRKINT && !PARMRK)) && (IGNPAR ||
163
 *      !INPCK)).  That is, if there is no reason for the driver to
164
 *      send notifications of parity and break characters up to the
165
 *      line driver, it won't do so.  This allows the line driver to
166
 *      optimize for this case if this flag is set.  (Note that there
167
 *      is also a promise, if the above case is true, not to signal
168
 *      overruns, either.)
169
 */
170
#define TTY_DRIVER_INSTALLED            0x0001
171
#define TTY_DRIVER_RESET_TERMIOS        0x0002
172
#define TTY_DRIVER_REAL_RAW             0x0004
173
 
174
/* tty driver types */
175
#define TTY_DRIVER_TYPE_SYSTEM          0x0001
176
#define TTY_DRIVER_TYPE_CONSOLE         0x0002
177
#define TTY_DRIVER_TYPE_SERIAL          0x0003
178
#define TTY_DRIVER_TYPE_PTY             0x0004
179
#define TTY_DRIVER_TYPE_SCC             0x0005  /* scc driver */
180
 
181
/* system subtypes (magic, used by tty_io.c) */
182
#define SYSTEM_TYPE_TTY                 0x0001
183
#define SYSTEM_TYPE_CONSOLE             0x0002
184
 
185
/* pty subtypes (magic, used by tty_io.c) */
186
#define PTY_TYPE_MASTER                 0x0001
187
#define PTY_TYPE_SLAVE                  0x0002
188
 
189
#endif /* #ifdef _LINUX_TTY_DRIVER_H */

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.