patch-2.4.22 linux-2.4.22/drivers/s390/char/con3215.c
Next file: linux-2.4.22/drivers/s390/char/ctrlchar.c
Previous file: linux-2.4.22/drivers/s390/block/dasd_int.h
Back to the patch index
Back to the overall index
- Lines: 83
- Date:
2003-08-25 04:44:42.000000000 -0700
- Orig file:
linux-2.4.21/drivers/s390/char/con3215.c
- Orig date:
2002-08-02 17:39:44.000000000 -0700
diff -urN linux-2.4.21/drivers/s390/char/con3215.c linux-2.4.22/drivers/s390/char/con3215.c
@@ -462,30 +462,35 @@
if ((raw = req->info) == NULL)
return; /* That shouldn't happen ... */
if (req->type == RAW3215_READ && raw->tty != NULL) {
- char *cchar;
+ unsigned int cchar;
tty = raw->tty;
- count = 160 - req->residual;
- if (MACHINE_IS_P390) {
- slen = strnlen(raw->inbuf, RAW3215_INBUF_SIZE);
- if (count > slen)
- count = slen;
- } else
+ count = 160 - req->residual;
+ if (MACHINE_IS_P390) {
+ slen = strnlen(raw->inbuf, RAW3215_INBUF_SIZE);
+ if (count > slen)
+ count = slen;
+ } else
if (count >= TTY_FLIPBUF_SIZE - tty->flip.count)
count = TTY_FLIPBUF_SIZE - tty->flip.count - 1;
EBCASC(raw->inbuf, count);
- if ((cchar = ctrlchar_handle(raw->inbuf, count, tty))) {
- if (cchar == (char *)-1)
- goto in_out;
+ cchar = ctrlchar_handle(raw->inbuf, count, tty);
+ switch (cchar & CTRLCHAR_MASK) {
+ case CTRLCHAR_SYSRQ:
+ break;
+
+ case CTRLCHAR_CTRL:
tty->flip.count++;
*tty->flip.flag_buf_ptr++ = TTY_NORMAL;
- *tty->flip.char_buf_ptr++ = *cchar;
+ *tty->flip.char_buf_ptr++ = cchar;
tty_flip_buffer_push(raw->tty);
- } else {
+ break;
+
+ case CTRLCHAR_NONE:
memcpy(tty->flip.char_buf_ptr,
raw->inbuf, count);
if (count < 2 ||
- (strncmp(raw->inbuf+count-2, "^n", 2) ||
+ (strncmp(raw->inbuf+count-2, "^n", 2) &&
strncmp(raw->inbuf+count-2, "\252n", 2)) ) {
/* don't add the auto \n */
tty->flip.char_buf_ptr[count] = '\n';
@@ -498,12 +503,12 @@
tty->flip.flag_buf_ptr += count;
tty->flip.count += count;
tty_flip_buffer_push(raw->tty);
+ break;
}
} else if (req->type == RAW3215_WRITE) {
raw->count -= req->len;
raw->written -= req->len;
}
-in_out:
raw->flags &= ~RAW3215_WORKING;
raw3215_free_req(req);
/* check for empty wait */
@@ -823,7 +828,8 @@
* The console structure for the 3215 console
*/
static struct console con3215 = {
- name: "tty3215",
+ name: "ttyS",
+ index: 0,
write: con3215_write,
device: con3215_device,
unblank: con3215_unblank,
@@ -1120,6 +1126,9 @@
*/
void __init tty3215_init(void)
{
+ /* Don't bother registering the tty if we already skipped the console */
+ if (!CONSOLE_IS_3215)
+ return;
/*
* Initialize the tty_driver structure
* Entries in tty3215_driver that are NOT initialized:
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)