Changeset abf3564 in mainline for uspace/app/trace/trace.c


Ignore:
Timestamp:
2008-09-18T22:19:42Z (16 years ago)
Author:
Jiri Svoboda <jirik.svoboda@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
f7176b1
Parents:
073c9e6
Message:

trace: Decode protocol-level call arguments, response retvals and arguments.

File:
1 edited

Legend:

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

    r073c9e6 rabf3564  
    137137}
    138138
    139 static void print_sc_retval(int retval, rv_type_t rv_type)
    140 {
    141         printf (" -> ");
    142         if (rv_type == RV_INTEGER) {
    143                 printf("%d", retval);
    144         } else if (rv_type == RV_HASH) {
    145                 printf("0x%08x", retval);
    146         } else if (rv_type == RV_ERRNO) {
    147                 if (retval >= -15 && retval <= 0) {
    148                         printf("%d %s (%s)", retval,
    149                             err_desc[retval].name,
    150                             err_desc[retval].desc);
     139void val_print(int val, val_type_t v_type)
     140{
     141        switch (v_type) {
     142        case V_VOID:
     143                printf("<void>");
     144                break;
     145
     146        case V_INTEGER:
     147                printf("%d", val);
     148                break;
     149
     150        case V_HASH:
     151                printf("0x%08x", val);
     152                break;
     153
     154        case V_ERRNO:
     155                if (val >= -15 && val <= 0) {
     156                        printf("%d %s (%s)", val,
     157                            err_desc[-val].name,
     158                            err_desc[-val].desc);
    151159                } else {
    152                         printf("%d", retval);
    153                 }
    154         } else if (rv_type == RV_INT_ERRNO) {
    155                 if (retval >= -15 && retval < 0) {
    156                         printf("%d %s (%s)", retval,
    157                             err_desc[retval].name,
    158                             err_desc[retval].desc);
     160                        printf("%d", val);
     161                }
     162                break;
     163        case V_INT_ERRNO:
     164                if (val >= -15 && val < 0) {
     165                        printf("%d %s (%s)", val,
     166                            err_desc[-val].name,
     167                            err_desc[-val].desc);
    159168                } else {
    160                         printf("%d", retval);
    161                 }
    162         }
     169                        printf("%d", val);
     170                }
     171                break;
     172
     173        case V_CHAR:
     174                if (val >= 0x20 && val < 0x7f) {
     175                        printf("'%c'", val);
     176                } else {
     177                        switch (val) {
     178                        case '\a': printf("'\\a'"); break;
     179                        case '\b': printf("'\\b'"); break;
     180                        case '\n': printf("'\\n'"); break;
     181                        case '\r': printf("'\\r'"); break;
     182                        case '\t': printf("'\\t'"); break;
     183                        case '\\': printf("'\\\\'"); break;
     184                        default: printf("'\\x%X'"); break;
     185                        }
     186                }
     187                break;
     188        }
     189}
     190
     191
     192static void print_sc_retval(int retval, val_type_t val_type)
     193{
     194        printf(" -> ");
     195        val_print(retval, val_type);
    163196        putchar('\n');
    164197}
     
    170203        putchar('(');
    171204        if (n > 0) printf("%d", sc_args[0]);
    172         for (i=1; i<n; i++) {
     205        for (i = 1; i < n; i++) {
    173206                printf(", %d", sc_args[i]);
    174207        }
     
    497530        oper_t *o;
    498531
     532        val_type_t arg_def[OPER_MAX_ARGS] = {
     533                V_INTEGER,
     534                V_INTEGER,
     535                V_INTEGER,
     536                V_INTEGER,
     537                V_INTEGER               
     538        };
     539
     540        val_type_t resp_def[OPER_MAX_ARGS] = {
     541                V_INTEGER,
     542                V_INTEGER,
     543                V_INTEGER,
     544                V_INTEGER,
     545                V_INTEGER               
     546        };
     547
    499548        next_thread_id = 1;
    500549        paused = 0;
     
    503552
    504553        p = proto_new("vfs");
    505         o = oper_new("read");
     554        o = oper_new("read", 1, arg_def, V_ERRNO, 1, resp_def);
    506555        proto_add_oper(p, VFS_READ, o);
    507         o = oper_new("write");
     556        o = oper_new("write", 1, arg_def, V_ERRNO, 1, resp_def);
    508557        proto_add_oper(p, VFS_WRITE, o);
    509         o = oper_new("truncate");
     558        o = oper_new("truncate", 5, arg_def, V_ERRNO, 0, resp_def);
    510559        proto_add_oper(p, VFS_TRUNCATE, o);
    511         o = oper_new("mount");
     560        o = oper_new("mount", 2, arg_def, V_ERRNO, 0, resp_def);
    512561        proto_add_oper(p, VFS_MOUNT, o);
    513         o = oper_new("unmount");
    514         proto_add_oper(p, VFS_UNMOUNT, o);
     562/*      o = oper_new("unmount", 0, arg_def);
     563        proto_add_oper(p, VFS_UNMOUNT, o);*/
    515564
    516565        proto_register(SERVICE_VFS, p);
    517566
    518567        p = proto_new("console");
    519         o = oper_new("getchar");
     568        resp_def[0] = V_CHAR;
     569        o = oper_new("getchar", 0, arg_def, V_INTEGER, 2, resp_def);
    520570        proto_add_oper(p, CONSOLE_GETCHAR, o);
    521         o = oper_new("putchar");
     571
     572        arg_def[0] = V_CHAR;
     573        o = oper_new("putchar", 1, arg_def, V_VOID, 0, resp_def);
    522574        proto_add_oper(p, CONSOLE_PUTCHAR, o);
    523         o = oper_new("clear");
     575        o = oper_new("clear", 0, arg_def, V_VOID, 0, resp_def);
    524576        proto_add_oper(p, CONSOLE_CLEAR, o);
    525         o = oper_new("goto");
     577
     578        arg_def[0] = V_INTEGER; arg_def[1] = V_INTEGER;
     579        o = oper_new("goto", 2, arg_def, V_VOID, 0, resp_def);
    526580        proto_add_oper(p, CONSOLE_GOTO, o);
    527         o = oper_new("getsize");
     581
     582        resp_def[0] = V_INTEGER; resp_def[1] = V_INTEGER;
     583        o = oper_new("getsize", 0, arg_def, V_INTEGER, 2, resp_def);
    528584        proto_add_oper(p, CONSOLE_GETSIZE, o);
    529         o = oper_new("flush");
     585        o = oper_new("flush", 0, arg_def, V_VOID, 0, resp_def);
    530586        proto_add_oper(p, CONSOLE_FLUSH, o);
    531         o = oper_new("set_style");
     587
     588        arg_def[0] = V_INTEGER; arg_def[1] = V_INTEGER;
     589        o = oper_new("set_style", 2, arg_def, V_INTEGER, 0, resp_def);
    532590        proto_add_oper(p, CONSOLE_SET_STYLE, o);
    533         o = oper_new("cursor_visibility");
     591        o = oper_new("cursor_visibility", 1, arg_def, V_VOID, 0, resp_def);
    534592        proto_add_oper(p, CONSOLE_CURSOR_VISIBILITY, o);
    535         o = oper_new("flush");
    536         proto_add_oper(p, CONSOLE_FLUSH, o);
    537593
    538594        proto_console = p;
Note: See TracChangeset for help on using the changeset viewer.