Changeset 87822ce in mainline for uspace/app/tester/ipc/starve.c


Ignore:
Timestamp:
2021-03-04T19:14:30Z (4 years ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
d6c4d40
Parents:
760a392
Message:

Avoid infinite loop when console communication is broken

Need to make sure callers of console_get_event_timeout() can distinguish
between timeout and I/O error. Fix all callers of console_get_event()
and console_get_event_timeout() not to enter infinite loop when console
connection is broken. Also avoid setting of errno variable.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/app/tester/ipc/starve.c

    r760a392 r87822ce  
    5757                cons_event_t ev;
    5858                usec_t timeout = 0;
    59                 bool has_event = console_get_event_timeout(console, &ev, &timeout);
    60                 if (has_event && ev.type == CEV_KEY && ev.ev.key.type == KEY_PRESS) {
    61                         TPRINTF("Key %d pressed, terminating.\n", ev.ev.key.key);
     59                errno_t rc = console_get_event_timeout(console, &ev, &timeout);
     60                if (rc == EOK) {
     61                        if (ev.type == CEV_KEY && ev.ev.key.type == KEY_PRESS) {
     62                                TPRINTF("Key %d pressed, terminating.\n", ev.ev.key.key);
     63                                break;
     64                        }
     65                } else if (rc != ETIMEOUT) {
     66                        TPRINTF("Got rc=%d, terminating.\n", rc);
    6267                        break;
    6368                }
Note: See TracChangeset for help on using the changeset viewer.