diff options
| author | Alan Cox <alan@linux.intel.com> | 2009-11-30 08:17:14 -0500 |
|---|---|---|
| committer | Greg Kroah-Hartman <gregkh@suse.de> | 2009-12-11 18:18:07 -0500 |
| commit | 568aafc627e2978509e8a80c640ba534d1e843cc (patch) | |
| tree | 1a24c5c0fc3a56054fa054a0255c04e5b7848daa /include/linux | |
| parent | 338818fd802a6baacb7e5b6910d52c8996ca6d28 (diff) | |
tty: tty_port: Add a kref object to the tty port
Users of tty port need a way to refcount ports when hotplugging is
involved.
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'include/linux')
| -rw-r--r-- | include/linux/tty.h | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/include/linux/tty.h b/include/linux/tty.h index e9269ca1542a..e6da667ba34d 100644 --- a/include/linux/tty.h +++ b/include/linux/tty.h | |||
| @@ -199,6 +199,8 @@ struct tty_port_operations { | |||
| 199 | /* FIXME: long term getting the tty argument *out* of this would be | 199 | /* FIXME: long term getting the tty argument *out* of this would be |
| 200 | good for consoles */ | 200 | good for consoles */ |
| 201 | int (*activate)(struct tty_port *port, struct tty_struct *tty); | 201 | int (*activate)(struct tty_port *port, struct tty_struct *tty); |
| 202 | /* Called on the final put of a port */ | ||
| 203 | void (*destruct)(struct tty_port *port); | ||
| 202 | }; | 204 | }; |
| 203 | 205 | ||
| 204 | struct tty_port { | 206 | struct tty_port { |
| @@ -219,6 +221,7 @@ struct tty_port { | |||
| 219 | int drain_delay; /* Set to zero if no pure time | 221 | int drain_delay; /* Set to zero if no pure time |
| 220 | based drain is needed else | 222 | based drain is needed else |
| 221 | set to size of fifo */ | 223 | set to size of fifo */ |
| 224 | struct kref kref; /* Ref counter */ | ||
| 222 | }; | 225 | }; |
| 223 | 226 | ||
| 224 | /* | 227 | /* |
| @@ -461,6 +464,15 @@ extern int tty_write_lock(struct tty_struct *tty, int ndelay); | |||
| 461 | extern void tty_port_init(struct tty_port *port); | 464 | extern void tty_port_init(struct tty_port *port); |
| 462 | extern int tty_port_alloc_xmit_buf(struct tty_port *port); | 465 | extern int tty_port_alloc_xmit_buf(struct tty_port *port); |
| 463 | extern void tty_port_free_xmit_buf(struct tty_port *port); | 466 | extern void tty_port_free_xmit_buf(struct tty_port *port); |
| 467 | extern void tty_port_put(struct tty_port *port); | ||
| 468 | |||
| 469 | extern inline struct tty_port *tty_port_get(struct tty_port *port) | ||
| 470 | { | ||
| 471 | if (port) | ||
| 472 | kref_get(&port->kref); | ||
| 473 | return port; | ||
| 474 | } | ||
| 475 | |||
| 464 | extern struct tty_struct *tty_port_tty_get(struct tty_port *port); | 476 | extern struct tty_struct *tty_port_tty_get(struct tty_port *port); |
| 465 | extern void tty_port_tty_set(struct tty_port *port, struct tty_struct *tty); | 477 | extern void tty_port_tty_set(struct tty_port *port, struct tty_struct *tty); |
| 466 | extern int tty_port_carrier_raised(struct tty_port *port); | 478 | extern int tty_port_carrier_raised(struct tty_port *port); |
