Fork us on GitHub Follow us on Facebook Follow us on Twitter

Changeset 9d8a1ed in mainline


Ignore:
Timestamp:
2009-07-21T18:34:05Z (12 years ago)
Author:
Jiri Svoboda <jirik.svoboda@…>
Branches:
lfn, master
Children:
654a30a
Parents:
986c24c
Message:

Read keys directly from console in tracer. This works around the current inability to write to stdout while blocked in getchar().

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/app/trace/trace.c

    r986c24c r9d8a1ed  
    4545#include <string.h>
    4646#include <loader/loader.h>
     47#include <io/console.h>
     48#include <io/keycode.h>
    4749
    4850#include <libc.h>
     
    453455
    454456                if (paused) {
    455                         printf("Press R to resume (and be patient).\n");
     457                        printf("Press R to resume.\n");
    456458                        while (paused) {
    457                                 usleep(1000000);
    458                                 fibril_yield();
    459                                 printf(".");
     459                                async_usleep(1000000);
    460460                        }
    461461                        printf("Resumed\n");
     
    558558static void trace_task(task_id_t task_id)
    559559{
     560        console_event_t ev;
     561        bool done;
    560562        int i;
    561563        int rc;
    562         int c;
    563564
    564565        ipcp_init();
     
    582583        }
    583584
    584         while(1) {
    585                 c = getchar();
    586                 if (c == 'q') break;
    587                 if (c == 'p') {
     585        done = false;
     586
     587        while (!done) {
     588                if (!console_get_event(fphone(stdin), &ev))
     589                        return;
     590
     591                if (ev.type != KEY_PRESS)
     592                        continue;
     593
     594                switch (ev.key) {
     595                case KC_Q:
     596                        done = true;
     597                        break;
     598                case KC_P:
    588599                        printf("Pause...\n");
    589                         paused = 1;
    590600                        rc = udebug_stop(phoneid, thash);
    591                         printf("stop -> %d\n", rc);
    592                 }
    593                 if (c == 'r') {
     601                        if (rc == EOK)
     602                                paused = 1;
     603                        else
     604                                printf("stop -> %d\n", rc);
     605                        break;
     606                case KC_R:
    594607                        paused = 0;
    595608                        printf("Resume...\n");
     609                        break;
    596610                }
    597611        }
Note: See TracChangeset for help on using the changeset viewer.