Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/generic/src/ipc/sysipc.c

    rdd884cb r5a5269d  
    131131static inline bool answer_need_old(call_t *call)
    132132{
    133         switch (IPC_GET_IMETHOD(call->data)) {
     133        switch (ipc_get_imethod(&call->data)) {
    134134        case IPC_M_CONNECT_TO_ME:
    135135        case IPC_M_CONNECT_ME_TO:
     
    192192        spinlock_unlock(&answer->forget_lock);
    193193
    194         if ((errno_t) IPC_GET_RETVAL(answer->data) == EHANGUP) {
     194        if ((errno_t) ipc_get_retval(&answer->data) == EHANGUP) {
    195195                phone_t *phone = answer->caller_phone;
    196196                mutex_lock(&phone->lock);
     
    223223static errno_t request_preprocess(call_t *call, phone_t *phone)
    224224{
    225         call->request_method = IPC_GET_IMETHOD(call->data);
     225        call->request_method = ipc_get_imethod(&call->data);
    226226        return SYSIPC_OP(request_preprocess, call, phone);
    227227}
     
    238238static void process_answer(call_t *call)
    239239{
    240         if (((errno_t) IPC_GET_RETVAL(call->data) == EHANGUP) &&
     240        if (((errno_t) ipc_get_retval(&call->data) == EHANGUP) &&
    241241            (call->flags & IPC_CALL_FORWARDED))
    242                 IPC_SET_RETVAL(call->data, EFORWARD);
     242                ipc_set_retval(&call->data, EFORWARD);
    243243
    244244        SYSIPC_OP(answer_process, call);
     
    326326                process_answer(call);
    327327        } else
    328                 IPC_SET_RETVAL(call->data, rc);
     328                ipc_set_retval(&call->data, rc);
    329329
    330330        memcpy(data->args, call->data.args, sizeof(data->args));
     
    385385        }
    386386
    387         IPC_SET_IMETHOD(call->data, imethod);
    388         IPC_SET_ARG1(call->data, arg1);
    389         IPC_SET_ARG2(call->data, arg2);
    390         IPC_SET_ARG3(call->data, arg3);
     387        ipc_set_imethod(&call->data, imethod);
     388        ipc_set_arg1(&call->data, arg1);
     389        ipc_set_arg2(&call->data, arg2);
     390        ipc_set_arg3(&call->data, arg3);
    391391
    392392        /*
     
    394394         * the limits of the fast version.
    395395         */
    396         IPC_SET_ARG5(call->data, 0);
     396        ipc_set_arg5(&call->data, 0);
    397397
    398398        /* Set the user-defined label */
     
    419419 *
    420420 */
    421 sys_errno_t sys_ipc_call_async_slow(cap_phone_handle_t handle, ipc_data_t *data,
     421sys_errno_t sys_ipc_call_async_slow(cap_phone_handle_t handle, uspace_ptr_ipc_data_t data,
    422422    sysarg_t label)
    423423{
     
    437437        }
    438438
    439         errno_t rc = copy_from_uspace(&call->data.args, &data->args,
     439        errno_t rc = copy_from_uspace(&call->data.args, data + offsetof(ipc_data_t, args),
    440440            sizeof(call->data.args));
    441441        if (rc != EOK) {
     
    505505        }
    506506
    507         if (!method_is_forwardable(IPC_GET_IMETHOD(call->data))) {
     507        if (!method_is_forwardable(ipc_get_imethod(&call->data))) {
    508508                rc = EPERM;
    509509                goto error;
     
    518518         * If the interface and method is immutable, don't change anything.
    519519         */
    520         if (!method_is_immutable(IPC_GET_IMETHOD(call->data))) {
    521                 if (method_is_system(IPC_GET_IMETHOD(call->data))) {
    522                         if (IPC_GET_IMETHOD(call->data) ==
     520        if (!method_is_immutable(ipc_get_imethod(&call->data))) {
     521                if (method_is_system(ipc_get_imethod(&call->data))) {
     522                        if (ipc_get_imethod(&call->data) ==
    523523                            IPC_M_CONNECT_TO_ME) {
    524524                                kobject_put((kobject_t *) call->priv);
    525525                                call->priv = 0;
    526526                                cap_free(TASK,
    527                                     (cap_handle_t) IPC_GET_ARG5(call->data));
     527                                    (cap_handle_t) ipc_get_arg5(&call->data));
    528528                        }
    529529
    530                         IPC_SET_ARG1(call->data, imethod);
    531                         IPC_SET_ARG2(call->data, arg1);
    532                         IPC_SET_ARG3(call->data, arg2);
     530                        ipc_set_arg1(&call->data, imethod);
     531                        ipc_set_arg2(&call->data, arg1);
     532                        ipc_set_arg3(&call->data, arg2);
    533533
    534534                        if (slow)
    535                                 IPC_SET_ARG4(call->data, arg3);
     535                                ipc_set_arg4(&call->data, arg3);
    536536
    537537                        /*
     
    540540                         */
    541541                } else {
    542                         IPC_SET_IMETHOD(call->data, imethod);
    543                         IPC_SET_ARG1(call->data, arg1);
    544                         IPC_SET_ARG2(call->data, arg2);
     542                        ipc_set_imethod(&call->data, imethod);
     543                        ipc_set_arg1(&call->data, arg1);
     544                        ipc_set_arg2(&call->data, arg2);
    545545                        if (slow) {
    546                                 IPC_SET_ARG3(call->data, arg3);
    547                                 IPC_SET_ARG4(call->data, arg4);
    548                                 IPC_SET_ARG5(call->data, arg5);
     546                                ipc_set_arg3(&call->data, arg3);
     547                                ipc_set_arg4(&call->data, arg4);
     548                                ipc_set_arg5(&call->data, arg5);
    549549                        }
    550550                }
     
    563563
    564564error:
    565         IPC_SET_RETVAL(call->data, EFORWARD);
     565        ipc_set_retval(&call->data, EFORWARD);
    566566        (void) answer_preprocess(call, need_old ? &old : NULL);
    567567        if (after_forward)
     
    623623 */
    624624sys_errno_t sys_ipc_forward_slow(cap_call_handle_t chandle,
    625     cap_phone_handle_t phandle, ipc_data_t *data, unsigned int mode)
     625    cap_phone_handle_t phandle, uspace_ptr_ipc_data_t data, unsigned int mode)
    626626{
    627627        ipc_data_t newdata;
    628         errno_t rc = copy_from_uspace(&newdata.args, &data->args,
     628        errno_t rc = copy_from_uspace(&newdata.args, data + offsetof(ipc_data_t, args),
    629629            sizeof(newdata.args));
    630630        if (rc != EOK)
     
    632632
    633633        return sys_ipc_forward_common(chandle, phandle,
    634             IPC_GET_IMETHOD(newdata), IPC_GET_ARG1(newdata),
    635             IPC_GET_ARG2(newdata), IPC_GET_ARG3(newdata),
    636             IPC_GET_ARG4(newdata), IPC_GET_ARG5(newdata), mode, true);
     634            ipc_get_imethod(&newdata), ipc_get_arg1(&newdata),
     635            ipc_get_arg2(&newdata), ipc_get_arg3(&newdata),
     636            ipc_get_arg4(&newdata), ipc_get_arg5(&newdata), mode, true);
    637637}
    638638
     
    671671                saved = false;
    672672
    673         IPC_SET_RETVAL(call->data, retval);
    674         IPC_SET_ARG1(call->data, arg1);
    675         IPC_SET_ARG2(call->data, arg2);
    676         IPC_SET_ARG3(call->data, arg3);
    677         IPC_SET_ARG4(call->data, arg4);
     673        ipc_set_retval(&call->data, retval);
     674        ipc_set_arg1(&call->data, arg1);
     675        ipc_set_arg2(&call->data, arg2);
     676        ipc_set_arg3(&call->data, arg3);
     677        ipc_set_arg4(&call->data, arg4);
    678678
    679679        /*
     
    681681         * the limits of the fast version.
    682682         */
    683         IPC_SET_ARG5(call->data, 0);
     683        ipc_set_arg5(&call->data, 0);
    684684        errno_t rc = answer_preprocess(call, saved ? &saved_data : NULL);
    685685
     
    700700 *
    701701 */
    702 sys_errno_t sys_ipc_answer_slow(cap_call_handle_t chandle, ipc_data_t *data)
     702sys_errno_t sys_ipc_answer_slow(cap_call_handle_t chandle, uspace_ptr_ipc_data_t data)
    703703{
    704704        kobject_t *kobj = cap_unpublish(TASK, chandle, KOBJECT_TYPE_CALL);
     
    718718                saved = false;
    719719
    720         errno_t rc = copy_from_uspace(&call->data.args, &data->args,
     720        errno_t rc = copy_from_uspace(&call->data.args, data + offsetof(ipc_data_t, args),
    721721            sizeof(call->data.args));
    722722        if (rc != EOK) {
     
    766766 * @return An error code on error.
    767767 */
    768 sys_errno_t sys_ipc_wait_for_call(ipc_data_t *calldata, uint32_t usec,
     768sys_errno_t sys_ipc_wait_for_call(uspace_ptr_ipc_data_t calldata, uint32_t usec,
    769769    unsigned int flags)
    770770{
     
    841841
    842842error:
    843         if (CAP_HANDLE_VALID(handle))
     843        if (cap_handle_valid(handle))
    844844                cap_free(TASK, handle);
    845845
     
    858858                saved = false;
    859859
    860         IPC_SET_RETVAL(call->data, EPARTY);
     860        ipc_set_retval(&call->data, EPARTY);
    861861        (void) answer_preprocess(call, saved ? &saved_data : NULL);
    862862        call->flags |= IPC_CALL_AUTO_REPLY;
     
    888888 */
    889889sys_errno_t sys_ipc_irq_subscribe(inr_t inr, sysarg_t imethod,
    890     irq_code_t *ucode, cap_irq_handle_t *uspace_handle)
     890    uspace_ptr_irq_code_t ucode, uspace_ptr_cap_irq_handle_t uspace_handle)
    891891{
    892892        if (!(perm_get(TASK) & PERM_IRQ_REG))
     
    918918 *
    919919 */
    920 sys_errno_t sys_ipc_connect_kbox(task_id_t *uspace_taskid,
    921     cap_phone_handle_t *uspace_phone)
     920sys_errno_t sys_ipc_connect_kbox(uspace_ptr_task_id_t uspace_taskid,
     921    uspace_ptr_cap_phone_handle_t uspace_phone)
    922922{
    923923#ifdef CONFIG_UDEBUG
Note: See TracChangeset for help on using the changeset viewer.