diff options
author | Alan Cox <alan@redhat.com> | 2008-10-13 10:37:07 +0100 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-10-13 09:51:40 -0700 |
commit | 9e48565d217a8a96cc7577308ad41e9e4b806a62 (patch) | |
tree | 2ff5f745d72e0d33a93cdc51622f011f0031eb76 /drivers/char/tty_port.c | |
parent | e04957365b21066285557e42ffe16d8330d46c02 (diff) | |
download | op-kernel-dev-9e48565d217a8a96cc7577308ad41e9e4b806a62.zip op-kernel-dev-9e48565d217a8a96cc7577308ad41e9e4b806a62.tar.gz |
tty: Split tty_port into its own file
Not much in it yet but this will grow a lot
Signed-off-by: Alan Cox <alan@redhat.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'drivers/char/tty_port.c')
-rw-r--r-- | drivers/char/tty_port.c | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/drivers/char/tty_port.c b/drivers/char/tty_port.c new file mode 100644 index 0000000..6fadb19 --- /dev/null +++ b/drivers/char/tty_port.c @@ -0,0 +1,55 @@ +/* + * Tty port functions + */ + +#include <linux/types.h> +#include <linux/errno.h> +#include <linux/tty.h> +#include <linux/tty_driver.h> +#include <linux/tty_flip.h> +#include <linux/timer.h> +#include <linux/string.h> +#include <linux/slab.h> +#include <linux/sched.h> +#include <linux/init.h> +#include <linux/wait.h> +#include <linux/bitops.h> +#include <linux/delay.h> +#include <linux/module.h> + +void tty_port_init(struct tty_port *port) +{ + memset(port, 0, sizeof(*port)); + init_waitqueue_head(&port->open_wait); + init_waitqueue_head(&port->close_wait); + mutex_init(&port->mutex); + port->close_delay = (50 * HZ) / 100; + port->closing_wait = (3000 * HZ) / 100; +} +EXPORT_SYMBOL(tty_port_init); + +int tty_port_alloc_xmit_buf(struct tty_port *port) +{ + /* We may sleep in get_zeroed_page() */ + mutex_lock(&port->mutex); + if (port->xmit_buf == NULL) + port->xmit_buf = (unsigned char *)get_zeroed_page(GFP_KERNEL); + mutex_unlock(&port->mutex); + if (port->xmit_buf == NULL) + return -ENOMEM; + return 0; +} +EXPORT_SYMBOL(tty_port_alloc_xmit_buf); + +void tty_port_free_xmit_buf(struct tty_port *port) +{ + mutex_lock(&port->mutex); + if (port->xmit_buf != NULL) { + free_page((unsigned long)port->xmit_buf); + port->xmit_buf = NULL; + } + mutex_unlock(&port->mutex); +} +EXPORT_SYMBOL(tty_port_free_xmit_buf); + + |