Subversion Repositories HelenOS

Rev

Rev 3447 | Rev 3454 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 3447 Rev 3452
Line 134... Line 134...
134
    printf("\ntotal of %u threads\n", tb_needed/sizeof(unsigned));
134
    printf("\ntotal of %u threads\n", tb_needed/sizeof(unsigned));
135
 
135
 
136
    return 0;
136
    return 0;
137
}
137
}
138
 
138
 
139
static void print_sc_retval(int retval, rv_type_t rv_type)
139
void val_print(int val, val_type_t v_type)
140
{
140
{
-
 
141
    switch (v_type) {
-
 
142
    case V_VOID:
141
    printf (" -> ");
143
        printf("<void>");
-
 
144
        break;
-
 
145
 
142
    if (rv_type == RV_INTEGER) {
146
    case V_INTEGER:
143
        printf("%d", retval);
147
        printf("%d", val);
-
 
148
        break;
-
 
149
 
144
    } else if (rv_type == RV_HASH) {
150
    case V_HASH:
145
        printf("0x%08x", retval);
151
        printf("0x%08x", val);
-
 
152
        break;
-
 
153
 
146
    } else if (rv_type == RV_ERRNO) {
154
    case V_ERRNO:
147
        if (retval >= -15 && retval <= 0) {
155
        if (val >= -15 && val <= 0) {
148
            printf("%d %s (%s)", retval,
156
            printf("%d %s (%s)", val,
149
                err_desc[retval].name,
157
                err_desc[-val].name,
150
                err_desc[retval].desc);
158
                err_desc[-val].desc);
151
        } else {
159
        } else {
152
            printf("%d", retval);
160
            printf("%d", val);
153
        }
161
        }
-
 
162
        break;
154
    } else if (rv_type == RV_INT_ERRNO) {
163
    case V_INT_ERRNO:
155
        if (retval >= -15 && retval < 0) {
164
        if (val >= -15 && val < 0) {
156
            printf("%d %s (%s)", retval,
165
            printf("%d %s (%s)", val,
157
                err_desc[retval].name,
166
                err_desc[-val].name,
158
                err_desc[retval].desc);
167
                err_desc[-val].desc);
-
 
168
        } else {
-
 
169
            printf("%d", val);
-
 
170
        }
-
 
171
        break;
-
 
172
 
-
 
173
    case V_CHAR:
-
 
174
        if (val >= 0x20 && val < 0x7f) {
-
 
175
            printf("'%c'", val);
159
        } else {
176
        } else {
160
            printf("%d", retval);
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
            }
161
        }
186
        }
-
 
187
        break;
162
    }
188
    }
-
 
189
}
-
 
190
 
-
 
191
 
-
 
192
static void print_sc_retval(int retval, val_type_t val_type)
-
 
193
{
-
 
194
    printf(" -> ");
-
 
195
    val_print(retval, val_type);
163
    putchar('\n');
196
    putchar('\n');
164
}
197
}
165
 
198
 
166
static void print_sc_args(unsigned *sc_args, int n)
199
static void print_sc_args(unsigned *sc_args, int n)
167
{
200
{
168
    int i;
201
    int i;
169
 
202
 
170
    putchar('(');
203
    putchar('(');
171
    if (n > 0) printf("%d", sc_args[0]);
204
    if (n > 0) printf("%d", sc_args[0]);
172
    for (i=1; i<n; i++) {
205
    for (i = 1; i < n; i++) {
173
        printf(", %d", sc_args[i]);
206
        printf(", %d", sc_args[i]);
174
    }
207
    }
175
    putchar(')');
208
    putchar(')');
176
}
209
}
177
 
210
 
Line 494... Line 527...
494
static void main_init(void)
527
static void main_init(void)
495
{
528
{
496
    proto_t *p;
529
    proto_t *p;
497
    oper_t *o;
530
    oper_t *o;
498
 
531
 
-
 
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
 
499
    next_thread_id = 1;
548
    next_thread_id = 1;
500
    paused = 0;
549
    paused = 0;
501
 
550
 
502
    proto_init();
551
    proto_init();
503
 
552
 
504
    p = proto_new("vfs");
553
    p = proto_new("vfs");
505
    o = oper_new("read");
554
    o = oper_new("read", 1, arg_def, V_ERRNO, 1, resp_def);
506
    proto_add_oper(p, VFS_READ, o);
555
    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);
508
    proto_add_oper(p, VFS_WRITE, o);
557
    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);
510
    proto_add_oper(p, VFS_TRUNCATE, o);
559
    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);
512
    proto_add_oper(p, VFS_MOUNT, o);
561
    proto_add_oper(p, VFS_MOUNT, o);
513
    o = oper_new("unmount");
562
/*  o = oper_new("unmount", 0, arg_def);
514
    proto_add_oper(p, VFS_UNMOUNT, o);
563
    proto_add_oper(p, VFS_UNMOUNT, o);*/
515
 
564
 
516
    proto_register(SERVICE_VFS, p);
565
    proto_register(SERVICE_VFS, p);
517
 
566
 
518
    p = proto_new("console");
567
    p = proto_new("console");
-
 
568
    resp_def[0] = V_CHAR;
519
    o = oper_new("getchar");
569
    o = oper_new("getchar", 0, arg_def, V_INTEGER, 2, resp_def);
520
    proto_add_oper(p, CONSOLE_GETCHAR, o);
570
    proto_add_oper(p, CONSOLE_GETCHAR, o);
-
 
571
 
-
 
572
    arg_def[0] = V_CHAR;
521
    o = oper_new("putchar");
573
    o = oper_new("putchar", 1, arg_def, V_VOID, 0, resp_def);
522
    proto_add_oper(p, CONSOLE_PUTCHAR, o);
574
    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);
524
    proto_add_oper(p, CONSOLE_CLEAR, o);
576
    proto_add_oper(p, CONSOLE_CLEAR, o);
-
 
577
 
-
 
578
    arg_def[0] = V_INTEGER; arg_def[1] = V_INTEGER;
525
    o = oper_new("goto");
579
    o = oper_new("goto", 2, arg_def, V_VOID, 0, resp_def);
526
    proto_add_oper(p, CONSOLE_GOTO, o);
580
    proto_add_oper(p, CONSOLE_GOTO, o);
-
 
581
 
-
 
582
    resp_def[0] = V_INTEGER; resp_def[1] = V_INTEGER;
527
    o = oper_new("getsize");
583
    o = oper_new("getsize", 0, arg_def, V_INTEGER, 2, resp_def);
528
    proto_add_oper(p, CONSOLE_GETSIZE, o);
584
    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);
530
    proto_add_oper(p, CONSOLE_FLUSH, o);
586
    proto_add_oper(p, CONSOLE_FLUSH, o);
-
 
587
 
-
 
588
    arg_def[0] = V_INTEGER; arg_def[1] = V_INTEGER;
531
    o = oper_new("set_style");
589
    o = oper_new("set_style", 2, arg_def, V_INTEGER, 0, resp_def);
532
    proto_add_oper(p, CONSOLE_SET_STYLE, o);
590
    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);
534
    proto_add_oper(p, CONSOLE_CURSOR_VISIBILITY, o);
592
    proto_add_oper(p, CONSOLE_CURSOR_VISIBILITY, o);
535
    o = oper_new("flush");
-
 
536
    proto_add_oper(p, CONSOLE_FLUSH, o);
-
 
537
 
593
 
538
    proto_console = p;
594
    proto_console = p;
539
    proto_register(SERVICE_CONSOLE, p);
595
    proto_register(SERVICE_CONSOLE, p);
540
}
596
}
541
 
597