aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/s390/char
diff options
context:
space:
mode:
authorJiri Slaby <jslaby@suse.cz>2013-01-03 09:53:06 -0500
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2013-01-16 01:30:15 -0500
commit2e124b4a390ca85325fae75764bef92f0547fa25 (patch)
tree5519fbcdbe954e79b271ea6d31ac5a4dc754c4f5 /drivers/s390/char
parentd6c53c0e9bd0a83f9f9ddbc9fd80141a54d83896 (diff)
TTY: switch tty_flip_buffer_push
Now, we start converting tty buffer functions to actually use tty_port. This will allow us to get rid of the need of tty in many call sites. Only tty_port will needed and hence no more tty_port_tty_get in those paths. Now, the one where most of tty_port_tty_get gets removed: tty_flip_buffer_push. IOW we also closed all the races in drivers not using tty_port_tty_get at all yet. Also we move tty_flip_buffer_push declaration from include/linux/tty.h to include/linux/tty_flip.h to all others while we are changing it anyway. Signed-off-by: Jiri Slaby <jslaby@suse.cz> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/s390/char')
-rw-r--r--drivers/s390/char/con3215.c4
-rw-r--r--drivers/s390/char/sclp_tty.c4
-rw-r--r--drivers/s390/char/sclp_vt220.c8
3 files changed, 5 insertions, 11 deletions
diff --git a/drivers/s390/char/con3215.c b/drivers/s390/char/con3215.c
index 41b75c5ae0d5..2f58e9fde156 100644
--- a/drivers/s390/char/con3215.c
+++ b/drivers/s390/char/con3215.c
@@ -413,7 +413,7 @@ static void raw3215_irq(struct ccw_device *cdev, unsigned long intparm,
413 case CTRLCHAR_CTRL: 413 case CTRLCHAR_CTRL:
414 tty_insert_flip_char(&raw->port, cchar, 414 tty_insert_flip_char(&raw->port, cchar,
415 TTY_NORMAL); 415 TTY_NORMAL);
416 tty_flip_buffer_push(tty); 416 tty_flip_buffer_push(&raw->port);
417 break; 417 break;
418 418
419 case CTRLCHAR_NONE: 419 case CTRLCHAR_NONE:
@@ -427,7 +427,7 @@ static void raw3215_irq(struct ccw_device *cdev, unsigned long intparm,
427 count -= 2; 427 count -= 2;
428 tty_insert_flip_string(&raw->port, raw->inbuf, 428 tty_insert_flip_string(&raw->port, raw->inbuf,
429 count); 429 count);
430 tty_flip_buffer_push(tty); 430 tty_flip_buffer_push(&raw->port);
431 break; 431 break;
432 } 432 }
433 } else if (req->type == RAW3215_WRITE) { 433 } else if (req->type == RAW3215_WRITE) {
diff --git a/drivers/s390/char/sclp_tty.c b/drivers/s390/char/sclp_tty.c
index 19b7c516c07d..14b4cb8abcc8 100644
--- a/drivers/s390/char/sclp_tty.c
+++ b/drivers/s390/char/sclp_tty.c
@@ -343,7 +343,7 @@ sclp_tty_input(unsigned char* buf, unsigned int count)
343 break; 343 break;
344 case CTRLCHAR_CTRL: 344 case CTRLCHAR_CTRL:
345 tty_insert_flip_char(&sclp_port, cchar, TTY_NORMAL); 345 tty_insert_flip_char(&sclp_port, cchar, TTY_NORMAL);
346 tty_flip_buffer_push(tty); 346 tty_flip_buffer_push(&sclp_port);
347 break; 347 break;
348 case CTRLCHAR_NONE: 348 case CTRLCHAR_NONE:
349 /* send (normal) input to line discipline */ 349 /* send (normal) input to line discipline */
@@ -355,7 +355,7 @@ sclp_tty_input(unsigned char* buf, unsigned int count)
355 tty_insert_flip_char(&sclp_port, '\n', TTY_NORMAL); 355 tty_insert_flip_char(&sclp_port, '\n', TTY_NORMAL);
356 } else 356 } else
357 tty_insert_flip_string(&sclp_port, buf, count - 2); 357 tty_insert_flip_string(&sclp_port, buf, count - 2);
358 tty_flip_buffer_push(tty); 358 tty_flip_buffer_push(&sclp_port);
359 break; 359 break;
360 } 360 }
361 tty_kref_put(tty); 361 tty_kref_put(tty);
diff --git a/drivers/s390/char/sclp_vt220.c b/drivers/s390/char/sclp_vt220.c
index 0eca99b98712..6c92f62623be 100644
--- a/drivers/s390/char/sclp_vt220.c
+++ b/drivers/s390/char/sclp_vt220.c
@@ -461,14 +461,9 @@ sclp_vt220_write(struct tty_struct *tty, const unsigned char *buf, int count)
461static void 461static void
462sclp_vt220_receiver_fn(struct evbuf_header *evbuf) 462sclp_vt220_receiver_fn(struct evbuf_header *evbuf)
463{ 463{
464 struct tty_struct *tty = tty_port_tty_get(&sclp_vt220_port);
465 char *buffer; 464 char *buffer;
466 unsigned int count; 465 unsigned int count;
467 466
468 /* Ignore input if device is not open */
469 if (tty == NULL)
470 return;
471
472 buffer = (char *) ((addr_t) evbuf + sizeof(struct evbuf_header)); 467 buffer = (char *) ((addr_t) evbuf + sizeof(struct evbuf_header));
473 count = evbuf->length - sizeof(struct evbuf_header); 468 count = evbuf->length - sizeof(struct evbuf_header);
474 469
@@ -481,10 +476,9 @@ sclp_vt220_receiver_fn(struct evbuf_header *evbuf)
481 buffer++; 476 buffer++;
482 count--; 477 count--;
483 tty_insert_flip_string(&sclp_vt220_port, buffer, count); 478 tty_insert_flip_string(&sclp_vt220_port, buffer, count);
484 tty_flip_buffer_push(tty); 479 tty_flip_buffer_push(&sclp_vt220_port);
485 break; 480 break;
486 } 481 }
487 tty_kref_put(tty);
488} 482}
489 483
490/* 484/*