#include <linux/string.h>
#include <linux/slab.h>
#include <linux/poll.h>
+#include <linux/bitops.h>
#include <asm/uaccess.h>
#include <asm/system.h>
-#include <asm/bitops.h>
/* number of characters left in xmit buffer before select has we have room */
#define WAKEUP_CHARS 256
* lock_kernel() still.
*/
-void n_tty_flush_buffer(struct tty_struct * tty)
+static void n_tty_flush_buffer(struct tty_struct * tty)
{
/* clear everything and unthrottle the driver */
reset_buffer_flags(tty);
* at this instant in time.
*/
-ssize_t n_tty_chars_in_buffer(struct tty_struct *tty)
+static ssize_t n_tty_chars_in_buffer(struct tty_struct *tty)
{
unsigned long flags;
ssize_t n = 0;
if (space < spaces)
return -1;
tty->column += spaces;
- tty->driver->write(tty, 0, " ", spaces);
+ tty->driver->write(tty, " ", spaces);
return 0;
}
tty->column += spaces;
*/
static ssize_t opost_block(struct tty_struct * tty,
- const unsigned char __user * inbuf, unsigned int nr)
+ const unsigned char * buf, unsigned int nr)
{
- char buf[80];
int space;
int i;
- char *cp;
+ const unsigned char *cp;
space = tty->driver->write_room(tty);
if (!space)
return 0;
if (nr > space)
nr = space;
- if (nr > sizeof(buf))
- nr = sizeof(buf);
-
- if (copy_from_user(buf, inbuf, nr))
- return -EFAULT;
for (i = 0, cp = buf; i < nr; i++, cp++) {
switch (*cp) {
case '\r':
if (O_ONOCR(tty) && tty->column == 0)
goto break_out;
- if (O_OCRNL(tty)) {
- *cp = '\n';
- if (O_ONLRET(tty))
- tty->canon_column = tty->column = 0;
- break;
- }
+ if (O_OCRNL(tty))
+ goto break_out;
tty->canon_column = tty->column = 0;
break;
case '\t':
break;
default:
if (O_OLCUC(tty))
- *cp = toupper(*cp);
+ goto break_out;
if (!iscntrl(*cp))
tty->column++;
break;
break_out:
if (tty->driver->flush_chars)
tty->driver->flush_chars(tty);
- i = tty->driver->write(tty, 0, buf, i);
+ i = tty->driver->write(tty, buf, i);
return i;
}
{
int retval;
- ssize_t n;
+ size_t n;
unsigned long flags;
retval = 0;
spin_lock_irqsave(&tty->read_lock, flags);
n = min(tty->read_cnt, N_TTY_BUF_SIZE - tty->read_tail);
- n = min((ssize_t)*nr, n);
+ n = min(*nr, n);
spin_unlock_irqrestore(&tty->read_lock, flags);
if (n) {
mb();
*/
static ssize_t write_chan(struct tty_struct * tty, struct file * file,
- const unsigned char __user * buf, size_t nr)
+ const unsigned char * buf, size_t nr)
{
- const unsigned char __user *b = buf;
+ const unsigned char *b = buf;
DECLARE_WAITQUEUE(wait, current);
int c;
ssize_t retval = 0;
nr -= num;
if (nr == 0)
break;
- get_user(c, b);
+ c = *b;
if (opost(c, tty) < 0)
break;
b++; nr--;
if (tty->driver->flush_chars)
tty->driver->flush_chars(tty);
} else {
- c = tty->driver->write(tty, 1, b, nr);
+ c = tty->driver->write(tty, b, nr);
if (c < 0) {
retval = c;
goto break_out;