Subversion Repositories HelenOS

Rev

Rev 4668 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 4668 Rev 4688
Line 204... Line 204...
204
    return 0;
204
    return 0;
205
}
205
}
206
 
206
 
207
void val_print(sysarg_t val, val_type_t v_type)
207
void val_print(sysarg_t val, val_type_t v_type)
208
{
208
{
-
 
209
    long sval;
-
 
210
 
-
 
211
    sval = (long) val;
-
 
212
 
209
    switch (v_type) {
213
    switch (v_type) {
210
    case V_VOID:
214
    case V_VOID:
211
        printf("<void>");
215
        printf("<void>");
212
        break;
216
        break;
213
 
217
 
214
    case V_INTEGER:
218
    case V_INTEGER:
215
        printf("%ld", val);
219
        printf("%ld", sval);
216
        break;
220
        break;
217
 
221
 
218
    case V_HASH:
222
    case V_HASH:
219
    case V_PTR:
223
    case V_PTR:
220
        printf("0x%08lx", val);
224
        printf("0x%08lx", val);
221
        break;
225
        break;
222
 
226
 
223
    case V_ERRNO:
227
    case V_ERRNO:
224
        if (val >= -15 && val <= 0) {
228
        if (sval >= -15 && sval <= 0) {
225
            printf("%ld %s (%s)", val,
229
            printf("%ld %s (%s)", sval,
226
                err_desc[-val].name,
230
                err_desc[-sval].name,
227
                err_desc[-val].desc);
231
                err_desc[-sval].desc);
228
        } else {
232
        } else {
229
            printf("%ld", val);
233
            printf("%ld", sval);
230
        }
234
        }
231
        break;
235
        break;
232
    case V_INT_ERRNO:
236
    case V_INT_ERRNO:
233
        if (val >= -15 && val < 0) {
237
        if (sval >= -15 && sval < 0) {
234
            printf("%ld %s (%s)", val,
238
            printf("%ld %s (%s)", sval,
235
                err_desc[-val].name,
239
                err_desc[-sval].name,
236
                err_desc[-val].desc);
240
                err_desc[-sval].desc);
237
        } else {
241
        } else {
238
            printf("%ld", val);
242
            printf("%ld", sval);
239
        }
243
        }
240
        break;
244
        break;
241
 
245
 
242
    case V_CHAR:
246
    case V_CHAR:
243
        if (val >= 0x20 && val < 0x7f) {
247
        if (sval >= 0x20 && sval < 0x7f) {
244
            printf("'%c'", val);
248
            printf("'%c'", sval);
245
        } else {
249
        } else {
246
            switch (val) {
250
            switch (sval) {
247
            case '\a': printf("'\\a'"); break;
251
            case '\a': printf("'\\a'"); break;
248
            case '\b': printf("'\\b'"); break;
252
            case '\b': printf("'\\b'"); break;
249
            case '\n': printf("'\\n'"); break;
253
            case '\n': printf("'\\n'"); break;
250
            case '\r': printf("'\\r'"); break;
254
            case '\r': printf("'\\r'"); break;
251
            case '\t': printf("'\\t'"); break;
255
            case '\t': printf("'\\t'"); break;
Line 280... Line 284...
280
static void sc_ipc_call_async_fast(sysarg_t *sc_args, sysarg_t sc_rc)
284
static void sc_ipc_call_async_fast(sysarg_t *sc_args, sysarg_t sc_rc)
281
{
285
{
282
    ipc_call_t call;
286
    ipc_call_t call;
283
    ipcarg_t phoneid;
287
    ipcarg_t phoneid;
284
   
288
   
-
 
289
    if (sc_rc == (sysarg_t) IPC_CALLRET_FATAL ||
285
    if (sc_rc == IPC_CALLRET_FATAL || sc_rc == IPC_CALLRET_TEMPORARY)
290
        sc_rc == (sysarg_t) IPC_CALLRET_TEMPORARY)
286
        return;
291
        return;
287
 
292
 
288
    phoneid = sc_args[0];
293
    phoneid = sc_args[0];
289
 
294
 
290
    IPC_SET_METHOD(call, sc_args[1]);
295
    IPC_SET_METHOD(call, sc_args[1]);
Line 300... Line 305...
300
static void sc_ipc_call_async_slow(sysarg_t *sc_args, sysarg_t sc_rc)
305
static void sc_ipc_call_async_slow(sysarg_t *sc_args, sysarg_t sc_rc)
301
{
306
{
302
    ipc_call_t call;
307
    ipc_call_t call;
303
    int rc;
308
    int rc;
304
 
309
 
-
 
310
    if (sc_rc == (sysarg_t) IPC_CALLRET_FATAL ||
305
    if (sc_rc == IPC_CALLRET_FATAL || sc_rc == IPC_CALLRET_TEMPORARY)
311
        sc_rc == (sysarg_t) IPC_CALLRET_TEMPORARY)
306
        return;
312
        return;
307
 
313
 
308
    memset(&call, 0, sizeof(call));
314
    memset(&call, 0, sizeof(call));
309
    rc = udebug_mem_read(phoneid, &call.args, sc_args[1], sizeof(call.args));
315
    rc = udebug_mem_read(phoneid, &call.args, sc_args[1], sizeof(call.args));
310
 
316
 
Line 341... Line 347...
341
    ipcp_call_sync(phoneidx, &question, &reply);
347
    ipcp_call_sync(phoneidx, &question, &reply);
342
}
348
}
343
 
349
 
344
static void sc_ipc_call_sync_slow_b(unsigned thread_id, sysarg_t *sc_args)
350
static void sc_ipc_call_sync_slow_b(unsigned thread_id, sysarg_t *sc_args)
345
{
351
{
346
    ipc_call_t question, reply;
352
    ipc_call_t question;
347
    int rc;
353
    int rc;
348
 
354
 
349
    memset(&question, 0, sizeof(question));
355
    memset(&question, 0, sizeof(question));
350
    rc = udebug_mem_read(phoneid, &question.args, sc_args[1], sizeof(question.args));
356
    rc = udebug_mem_read(phoneid, &question.args, sc_args[1],
-
 
357
        sizeof(question.args));
-
 
358
 
351
    if (rc < 0) {
359
    if (rc < 0) {
352
        printf("Error: mem_read->%d\n", rc);
360
        printf("Error: mem_read->%d\n", rc);
353
        return;
361
        return;
354
    }
362
    }
355
 
363
 
356
    thread_ipc_req[thread_id] = question;
364
    thread_ipc_req[thread_id] = question;
357
}
365
}
358
 
366
 
359
static void sc_ipc_call_sync_slow_e(unsigned thread_id, sysarg_t *sc_args)
367
static void sc_ipc_call_sync_slow_e(unsigned thread_id, sysarg_t *sc_args)
360
{
368
{
361
    ipc_call_t question, reply;
369
    ipc_call_t reply;
362
    int rc;
370
    int rc;
363
 
371
 
364
    memset(&reply, 0, sizeof(reply));
372
    memset(&reply, 0, sizeof(reply));
365
    rc = udebug_mem_read(phoneid, &reply.args, sc_args[2], sizeof(reply.args));
373
    rc = udebug_mem_read(phoneid, &reply.args, sc_args[2],
-
 
374
        sizeof(reply.args));
-
 
375
 
366
    if (rc < 0) {
376
    if (rc < 0) {
367
        printf("Error: mem_read->%d\n", rc);
377
        printf("Error: mem_read->%d\n", rc);
368
        return;
378
        return;
369
    }
379
    }
370
 
380