120,6 → 120,7 |
|
call = malloc(sizeof(*call)); |
if (!call) { |
if (callback) |
callback(private, ENOMEM, NULL); |
return; |
} |
127,6 → 128,7 |
callid = __SYSCALL4(SYS_IPC_CALL_ASYNC_FAST, phoneid, method, arg1, arg2); |
if (callid == IPC_CALLRET_FATAL) { |
/* Call asynchronous handler with error code */ |
if (callback) |
callback(private, ENOENT, NULL); |
free(call); |
return; |
205,6 → 207,7 |
|
if (callid == IPC_CALLRET_FATAL) { |
futex_up(&ipc_futex); |
if (call->callback) |
call->callback(call->private, ENOENT, NULL); |
free(call); |
futex_down(&ipc_futex); |
236,9 → 239,11 |
if (call->u.callid == callid) { |
list_remove(&call->list); |
futex_up(&ipc_futex); |
if (call->callback) |
call->callback(call->private, |
IPC_GET_RETVAL(*data), |
data); |
free(call); |
return; |
} |
} |