Rev 4348 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 4348 | Rev 4389 | ||
|---|---|---|---|
| Line 501... | Line 501... | ||
| 501 | size_t off; |
501 | size_t off; |
| 502 | 502 | ||
| 503 | if (!ipc_data_write_receive(&callid, &size)) { |
503 | if (!ipc_data_write_receive(&callid, &size)) { |
| 504 | ipc_answer_0(callid, EINVAL); |
504 | ipc_answer_0(callid, EINVAL); |
| 505 | ipc_answer_0(rid, EINVAL); |
505 | ipc_answer_0(rid, EINVAL); |
| - | 506 | return; |
|
| 506 | } |
507 | } |
| 507 | 508 | ||
| 508 | if (size > CWRITE_BUF_SIZE) |
509 | if (size > CWRITE_BUF_SIZE) |
| 509 | size = CWRITE_BUF_SIZE; |
510 | size = CWRITE_BUF_SIZE; |
| 510 | 511 | ||
| 511 | (void) ipc_data_write_finalize(callid, cwrite_buf, size); |
512 | (void) ipc_data_write_finalize(callid, cwrite_buf, size); |
| 512 | 513 | ||
| - | 514 | async_serialize_start(); |
|
| - | 515 | ||
| 513 | off = 0; |
516 | off = 0; |
| 514 | while (off < size) { |
517 | while (off < size) { |
| 515 | ch = str_decode(cwrite_buf, &off, size); |
518 | ch = str_decode(cwrite_buf, &off, size); |
| 516 | write_char(consnum, ch); |
519 | write_char(consnum, ch); |
| 517 | } |
520 | } |
| 518 | 521 | ||
| - | 522 | async_serialize_end(); |
|
| - | 523 | ||
| 519 | gcons_notify_char(consnum); |
524 | gcons_notify_char(consnum); |
| 520 | ipc_answer_1(rid, EOK, size); |
525 | ipc_answer_1(rid, EOK, size); |
| 521 | } |
526 | } |
| 522 | 527 | ||
| 523 | /** Default thread for new connections */ |
528 | /** Default thread for new connections */ |
| Line 573... | Line 578... | ||
| 573 | case CONSOLE_PUTCHAR: |
578 | case CONSOLE_PUTCHAR: |
| 574 | write_char(consnum, IPC_GET_ARG1(call)); |
579 | write_char(consnum, IPC_GET_ARG1(call)); |
| 575 | gcons_notify_char(consnum); |
580 | gcons_notify_char(consnum); |
| 576 | break; |
581 | break; |
| 577 | case CONSOLE_WRITE: |
582 | case CONSOLE_WRITE: |
| - | 583 | async_serialize_end(); |
|
| 578 | cons_write(consnum, callid, &call); |
584 | cons_write(consnum, callid, &call); |
| - | 585 | async_serialize_start(); |
|
| 579 | continue; |
586 | continue; |
| 580 | case CONSOLE_CLEAR: |
587 | case CONSOLE_CLEAR: |
| 581 | /* Send message to fb */ |
588 | /* Send message to fb */ |
| 582 | if (consnum == active_console) { |
589 | if (consnum == active_console) { |
| 583 | async_msg_0(fb_info.phone, FB_CLEAR); |
590 | async_msg_0(fb_info.phone, FB_CLEAR); |