mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-19 21:21:09 +00:00
tty_port: Add port client functions
Introduce a client (upward direction) operations struct for tty_port clients. Initially supported operations are for receiving data and write wake-up. This will allow for having clients other than an ldisc. Convert the calls to the ldisc to use the client ops as the default operations. Signed-off-by: Rob Herring <robh@kernel.org> Reviewed-By: Sebastian Reichel <sre@kernel.org> Tested-By: Sebastian Reichel <sre@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
a380ed461f
commit
c3485ee0d5
3 changed files with 51 additions and 21 deletions
|
@ -217,12 +217,18 @@ struct tty_port_operations {
|
|||
/* Called on the final put of a port */
|
||||
void (*destruct)(struct tty_port *port);
|
||||
};
|
||||
|
||||
|
||||
struct tty_port_client_operations {
|
||||
int (*receive_buf)(struct tty_port *port, const unsigned char *, const unsigned char *, size_t);
|
||||
void (*write_wakeup)(struct tty_port *port);
|
||||
};
|
||||
|
||||
struct tty_port {
|
||||
struct tty_bufhead buf; /* Locked internally */
|
||||
struct tty_struct *tty; /* Back pointer */
|
||||
struct tty_struct *itty; /* internal back ptr */
|
||||
const struct tty_port_operations *ops; /* Port operations */
|
||||
const struct tty_port_client_operations *client_ops; /* Port client operations */
|
||||
spinlock_t lock; /* Lock protecting tty field */
|
||||
int blocked_open; /* Waiting to open */
|
||||
int count; /* Usage count */
|
||||
|
@ -241,6 +247,7 @@ struct tty_port {
|
|||
based drain is needed else
|
||||
set to size of fifo */
|
||||
struct kref kref; /* Ref counter */
|
||||
void *client_data;
|
||||
};
|
||||
|
||||
/* tty_port::iflags bits -- use atomic bit ops */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue