320
static void sc_ipc_call_sync_fast(sysarg_t *sc_args)
322
ipc_call_t question, reply;
326
phoneid = sc_args[0];
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);
335
memset(&reply, 0, sizeof(reply));
336
rc = udebug_mem_read(sess, &reply.args, sc_args[5], sizeof(reply.args));
340
ipcp_call_sync(phoneid, &question, &reply);
343
static void sc_ipc_call_sync_slow_b(unsigned thread_id, sysarg_t *sc_args)
348
memset(&question, 0, sizeof(question));
349
rc = udebug_mem_read(sess, &question.args, sc_args[1],
350
sizeof(question.args));
353
printf("Error: mem_read->%d\n", rc);
357
thread_ipc_req[thread_id] = question;
360
static void sc_ipc_call_sync_slow_e(unsigned thread_id, sysarg_t *sc_args)
365
memset(&reply, 0, sizeof(reply));
366
rc = udebug_mem_read(sess, &reply.args, sc_args[2],
370
printf("Error: mem_read->%d\n", rc);
374
ipcp_call_sync(sc_args[0], &thread_ipc_req[thread_id], &reply);
377
320
static void sc_ipc_wait(sysarg_t *sc_args, int sc_rc)
407
350
printf("%s", syscall_desc[sc_id].name);
408
351
print_sc_args(sc_args, syscall_desc[sc_id].n_args);
412
case SYS_IPC_CALL_SYNC_SLOW:
413
sc_ipc_call_sync_slow_b(thread_id, sc_args);
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);
450
case SYS_IPC_CALL_SYNC_FAST:
451
sc_ipc_call_sync_fast(sc_args);
453
case SYS_IPC_CALL_SYNC_SLOW:
454
sc_ipc_call_sync_slow_e(thread_id, sc_args);
456
385
case SYS_IPC_WAIT:
457
386
sc_ipc_wait(sc_args, sc_rc);