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:
committed by
Greg Kroah-Hartman
parent
a380ed461f
commit
c3485ee0d5
@@ -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 */
|
||||
|
||||
Reference in New Issue
Block a user