~jsvoboda/helenos/dnsr

« back to all changes in this revision

Viewing changes to uspace/app/trace/trace.c

  • Committer: Jiri Svoboda
  • Date: 2012-11-11 21:31:03 UTC
  • mfrom: (1527.1.178 mainline)
  • Revision ID: jiri@wiwaxia-20121111213103-314bmkettwvlwj97
MergeĀ mainlineĀ changes.

Show diffs side-by-side

added added

removed removed

Lines of Context:
317
317
        }
318
318
}
319
319
 
320
 
static void sc_ipc_call_sync_fast(sysarg_t *sc_args)
321
 
{
322
 
        ipc_call_t question, reply;
323
 
        int rc;
324
 
        int phoneid;
325
 
 
326
 
        phoneid = sc_args[0];
327
 
 
328
 
        IPC_SET_IMETHOD(question, sc_args[1]);
329
 
        IPC_SET_ARG1(question, sc_args[2]);
330
 
        IPC_SET_ARG2(question, sc_args[3]);
331
 
        IPC_SET_ARG3(question, sc_args[4]);
332
 
        IPC_SET_ARG4(question, 0);
333
 
        IPC_SET_ARG5(question, 0);
334
 
 
335
 
        memset(&reply, 0, sizeof(reply));
336
 
        rc = udebug_mem_read(sess, &reply.args, sc_args[5], sizeof(reply.args));
337
 
        if (rc < 0)
338
 
                return;
339
 
        
340
 
        ipcp_call_sync(phoneid, &question, &reply);
341
 
}
342
 
 
343
 
static void sc_ipc_call_sync_slow_b(unsigned thread_id, sysarg_t *sc_args)
344
 
{
345
 
        ipc_call_t question;
346
 
        int rc;
347
 
 
348
 
        memset(&question, 0, sizeof(question));
349
 
        rc = udebug_mem_read(sess, &question.args, sc_args[1],
350
 
            sizeof(question.args));
351
 
 
352
 
        if (rc < 0) {
353
 
                printf("Error: mem_read->%d\n", rc);
354
 
                return;
355
 
        }
356
 
 
357
 
        thread_ipc_req[thread_id] = question;
358
 
}
359
 
 
360
 
static void sc_ipc_call_sync_slow_e(unsigned thread_id, sysarg_t *sc_args)
361
 
{
362
 
        ipc_call_t reply;
363
 
        int rc;
364
 
 
365
 
        memset(&reply, 0, sizeof(reply));
366
 
        rc = udebug_mem_read(sess, &reply.args, sc_args[2],
367
 
            sizeof(reply.args));
368
 
 
369
 
        if (rc < 0) {
370
 
                printf("Error: mem_read->%d\n", rc);
371
 
                return;
372
 
        }
373
 
 
374
 
        ipcp_call_sync(sc_args[0], &thread_ipc_req[thread_id], &reply);
375
 
}
376
 
 
377
320
static void sc_ipc_wait(sysarg_t *sc_args, int sc_rc)
378
321
{
379
322
        ipc_call_t call;
407
350
                printf("%s", syscall_desc[sc_id].name);
408
351
                print_sc_args(sc_args, syscall_desc[sc_id].n_args);
409
352
        }
410
 
 
411
 
        switch (sc_id) {
412
 
        case SYS_IPC_CALL_SYNC_SLOW:
413
 
                sc_ipc_call_sync_slow_b(thread_id, sc_args);
414
 
                break;
415
 
        default:
416
 
                break;
417
 
        }
418
353
}
419
354
 
420
355
static void event_syscall_e(unsigned thread_id, uintptr_t thread_hash,
447
382
        case SYS_IPC_CALL_ASYNC_SLOW:
448
383
                sc_ipc_call_async_slow(sc_args, sc_rc);
449
384
                break;
450
 
        case SYS_IPC_CALL_SYNC_FAST:
451
 
                sc_ipc_call_sync_fast(sc_args);
452
 
                break;
453
 
        case SYS_IPC_CALL_SYNC_SLOW:
454
 
                sc_ipc_call_sync_slow_e(thread_id, sc_args);
455
 
                break;
456
385
        case SYS_IPC_WAIT:
457
386
                sc_ipc_wait(sc_args, sc_rc);
458
387
                break;