Changeset f9d0a86 in mainline for uspace/lib/c/generic/ipc.c
- Timestamp:
- 2017-11-14T12:24:42Z (6 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 6cad776
- Parents:
- 887c9de (diff), d2d142a (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)
links above to see all the changes relative to each parent. - git-author:
- Aearsis <Hlavaty.Ondrej@…> (2017-11-14 01:04:19)
- git-committer:
- Aearsis <Hlavaty.Ondrej@…> (2017-11-14 12:24:42)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/c/generic/ipc.c
r887c9de rf9d0a86 148 148 } 149 149 150 if (callid == (ipc_callid_t) IPC_CALLRET_TEMPORARY) {151 futex_unlock(&ipc_futex);152 153 call->u.msg.phoneid = phoneid;154 155 futex_down(&async_futex);156 list_append(&call->list, &queued_calls);157 158 call->fid = fibril_get_id();159 fibril_switch(FIBRIL_TO_MANAGER);160 /* Async futex unlocked by previous call */161 162 return;163 }164 165 150 call->u.callid = callid; 166 151 … … 210 195 ipc_callid_t callid = __SYSCALL6(SYS_IPC_CALL_ASYNC_FAST, phoneid, 211 196 imethod, arg1, arg2, arg3, arg4); 212 213 if (callid == (ipc_callid_t) IPC_CALLRET_TEMPORARY) {214 if (!call) {215 call = ipc_prepare_async(private, callback);216 if (!call) {217 futex_unlock(&ipc_futex);218 return;219 }220 }221 222 IPC_SET_IMETHOD(call->u.msg.data, imethod);223 IPC_SET_ARG1(call->u.msg.data, arg1);224 IPC_SET_ARG2(call->u.msg.data, arg2);225 IPC_SET_ARG3(call->u.msg.data, arg3);226 IPC_SET_ARG4(call->u.msg.data, arg4);227 228 /*229 * To achieve deterministic behavior, we always zero out the230 * arguments that are beyond the limits of the fast version.231 */232 233 IPC_SET_ARG5(call->u.msg.data, 0);234 }235 197 236 198 ipc_finish_async(callid, phoneid, call); … … 351 313 ipc_callid_t callid = 352 314 ipc_call_async_internal(call->u.msg.phoneid, &call->u.msg.data); 353 354 if (callid == (ipc_callid_t) IPC_CALLRET_TEMPORARY)355 break;356 315 357 316 list_remove(&call->list);
Note:
See TracChangeset
for help on using the changeset viewer.