mirror of
https://github.com/torvalds/linux.git
synced 2024-10-30 08:42:47 +00:00
[PATCH] hvc_console: Separate the NUL character filtering from get_hvc_chars
Separate the NUL character filtering from get_hvc_chars. Signed-off-by: Milton Miller <miltonm@bga.com> Signed-off-by: Anton Blanchard <anton@samba.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
030ffad23f
commit
70b234a401
@ -41,29 +41,14 @@ int hvc_get_chars(uint32_t vtermno, char *buf, int count)
|
||||
unsigned long got;
|
||||
|
||||
if (plpar_hcall(H_GET_TERM_CHAR, vtermno, 0, 0, 0, &got,
|
||||
(unsigned long *)buf, (unsigned long *)buf+1) == H_Success) {
|
||||
/*
|
||||
* Work around a HV bug where it gives us a null
|
||||
* after every \r. -- paulus
|
||||
*/
|
||||
if (got > 0) {
|
||||
int i;
|
||||
for (i = 1; i < got; ++i) {
|
||||
if (buf[i] == 0 && buf[i-1] == '\r') {
|
||||
--got;
|
||||
if (i < got)
|
||||
memmove(&buf[i], &buf[i+1],
|
||||
got - i);
|
||||
}
|
||||
}
|
||||
}
|
||||
(unsigned long *)buf, (unsigned long *)buf+1) == H_Success)
|
||||
return got;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
EXPORT_SYMBOL(hvc_get_chars);
|
||||
|
||||
|
||||
/**
|
||||
* hvc_put_chars: send characters to firmware for denoted vterm adapter
|
||||
* @vtermno: The vtermno or unit_address of the adapter from which the data
|
||||
|
@ -43,8 +43,30 @@ static struct vio_device_id hvc_driver_table[] __devinitdata = {
|
||||
};
|
||||
MODULE_DEVICE_TABLE(vio, hvc_driver_table);
|
||||
|
||||
static int filtered_get_chars(uint32_t vtermno, char *buf, int count)
|
||||
{
|
||||
unsigned long got;
|
||||
int i;
|
||||
|
||||
got = hvc_get_chars(vtermno, buf, count);
|
||||
|
||||
/*
|
||||
* Work around a HV bug where it gives us a null
|
||||
* after every \r. -- paulus
|
||||
*/
|
||||
for (i = 1; i < got; ++i) {
|
||||
if (buf[i] == 0 && buf[i-1] == '\r') {
|
||||
--got;
|
||||
if (i < got)
|
||||
memmove(&buf[i], &buf[i+1],
|
||||
got - i);
|
||||
}
|
||||
}
|
||||
return got;
|
||||
}
|
||||
|
||||
static struct hv_ops hvc_get_put_ops = {
|
||||
.get_chars = hvc_get_chars,
|
||||
.get_chars = filtered_get_chars,
|
||||
.put_chars = hvc_put_chars,
|
||||
};
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user