Changeset f9d0a86 in mainline for uspace/lib/c/generic/ipc.c


Ignore:
Timestamp:
2017-11-14T12:24:42Z (6 years ago)
Author:
Aearsis <Hlavaty.Ondrej@…>
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)
Message:

Merge tag '0.7.1'

The merge wasn't clean, because of changes in build system. The most
significant change was partial revert of usbhc callback refactoring,
which now does not take usb transfer batch, but few named fields again.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/c/generic/ipc.c

    r887c9de rf9d0a86  
    148148        }
    149149       
    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        
    165150        call->u.callid = callid;
    166151       
     
    210195        ipc_callid_t callid = __SYSCALL6(SYS_IPC_CALL_ASYNC_FAST, phoneid,
    211196            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 the
    230                  * arguments that are beyond the limits of the fast version.
    231                  */
    232                
    233                 IPC_SET_ARG5(call->u.msg.data, 0);
    234         }
    235197       
    236198        ipc_finish_async(callid, phoneid, call);
     
    351313                ipc_callid_t callid =
    352314                    ipc_call_async_internal(call->u.msg.phoneid, &call->u.msg.data);
    353                
    354                 if (callid == (ipc_callid_t) IPC_CALLRET_TEMPORARY)
    355                         break;
    356315               
    357316                list_remove(&call->list);
Note: See TracChangeset for help on using the changeset viewer.