Changeset fafb8e5 in mainline for kernel/generic/src/ipc/ops
- Timestamp:
- 2019-02-06T13:25:12Z (7 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 95a47b0
- Parents:
- eb13ef8
- git-author:
- Jiří Zárevúcky <zarevucky.jiri@…> (2019-02-02 14:10:59)
- git-committer:
- Jiří Zárevúcky <zarevucky.jiri@…> (2019-02-06 13:25:12)
- Location:
- kernel/generic/src/ipc/ops
- Files:
-
- 9 edited
-
conctmeto.c (modified) (4 diffs)
-
concttome.c (modified) (4 diffs)
-
dataread.c (modified) (6 diffs)
-
datawrite.c (modified) (3 diffs)
-
debug.c (modified) (1 diff)
-
pagein.c (modified) (3 diffs)
-
sharein.c (modified) (2 diffs)
-
shareout.c (modified) (3 diffs)
-
stchngath.c (modified) (7 diffs)
Legend:
- Unmodified
- Added
- Removed
-
kernel/generic/src/ipc/ops/conctmeto.c
reb13ef8 rfafb8e5 59 59 60 60 /* Remember the handle */ 61 IPC_SET_ARG5(&call->data, (sysarg_t) phandle);61 ipc_set_arg5(&call->data, (sysarg_t) phandle); 62 62 63 63 return EOK; … … 66 66 static errno_t request_forget(call_t *call) 67 67 { 68 cap_phone_handle_t phandle = (cap_handle_t) IPC_GET_ARG5(&call->data);68 cap_phone_handle_t phandle = (cap_handle_t) ipc_get_arg5(&call->data); 69 69 70 70 if (cap_handle_raw(phandle) < 0) … … 88 88 89 89 /* Set the recipient-assigned label */ 90 pobj->phone->label = IPC_GET_ARG5(&answer->data);90 pobj->phone->label = ipc_get_arg5(&answer->data); 91 91 92 92 /* Restore phone handle in answer's ARG5 */ 93 IPC_SET_ARG5(&answer->data, IPC_GET_ARG5(olddata));93 ipc_set_arg5(&answer->data, ipc_get_arg5(olddata)); 94 94 95 95 /* If the user accepted the call, connect */ 96 if ( IPC_GET_RETVAL(&answer->data) == EOK) {96 if (ipc_get_retval(&answer->data) == EOK) { 97 97 /* Hand over reference from pobj to the answerbox */ 98 98 (void) ipc_phone_connect(pobj->phone, &TASK->answerbox); … … 107 107 static errno_t answer_process(call_t *answer) 108 108 { 109 cap_phone_handle_t phandle = (cap_handle_t) IPC_GET_ARG5(&answer->data);109 cap_phone_handle_t phandle = (cap_handle_t) ipc_get_arg5(&answer->data); 110 110 /* Move the reference from answer->priv to pobj */ 111 111 kobject_t *pobj = (kobject_t *) answer->priv; 112 112 answer->priv = 0; 113 113 114 if ( IPC_GET_RETVAL(&answer->data)) {114 if (ipc_get_retval(&answer->data)) { 115 115 if (cap_handle_raw(phandle) >= 0) { 116 116 /* -
kernel/generic/src/ipc/ops/concttome.c
reb13ef8 rfafb8e5 49 49 * Set the sender-assigned label to the new phone. 50 50 */ 51 pobj->phone->label = IPC_GET_ARG5(&call->data);51 pobj->phone->label = ipc_get_arg5(&call->data); 52 52 } 53 53 call->priv = (sysarg_t) pobj; 54 IPC_SET_ARG5(&call->data, cap_handle_raw(phandle));54 ipc_set_arg5(&call->data, cap_handle_raw(phandle)); 55 55 return 0; 56 56 } … … 58 58 static errno_t answer_cleanup(call_t *answer, ipc_data_t *olddata) 59 59 { 60 cap_phone_handle_t phandle = (cap_handle_t) IPC_GET_ARG5(olddata);60 cap_phone_handle_t phandle = (cap_handle_t) ipc_get_arg5(olddata); 61 61 kobject_t *pobj = (kobject_t *) answer->priv; 62 62 … … 71 71 static errno_t answer_preprocess(call_t *answer, ipc_data_t *olddata) 72 72 { 73 cap_phone_handle_t phandle = (cap_handle_t) IPC_GET_ARG5(olddata);73 cap_phone_handle_t phandle = (cap_handle_t) ipc_get_arg5(olddata); 74 74 kobject_t *pobj = (kobject_t *) answer->priv; 75 75 76 if ( IPC_GET_RETVAL(&answer->data) != EOK) {76 if (ipc_get_retval(&answer->data) != EOK) { 77 77 /* The connection was not accepted */ 78 78 answer_cleanup(answer, olddata); … … 94 94 } else { 95 95 /* The answerbox is shutting down. */ 96 IPC_SET_RETVAL(&answer->data, ENOENT);96 ipc_set_retval(&answer->data, ENOENT); 97 97 answer_cleanup(answer, olddata); 98 98 } 99 99 } else { 100 IPC_SET_RETVAL(&answer->data, ELIMIT);100 ipc_set_retval(&answer->data, ELIMIT); 101 101 } 102 102 -
kernel/generic/src/ipc/ops/dataread.c
reb13ef8 rfafb8e5 43 43 static errno_t request_preprocess(call_t *call, phone_t *phone) 44 44 { 45 size_t size = IPC_GET_ARG2(&call->data);45 size_t size = ipc_get_arg2(&call->data); 46 46 47 47 if (size > DATA_XFER_LIMIT) { 48 int flags = IPC_GET_ARG3(&call->data);48 int flags = ipc_get_arg3(&call->data); 49 49 50 50 if (flags & IPC_XF_RESTRICT) 51 IPC_SET_ARG2(&call->data, DATA_XFER_LIMIT);51 ipc_set_arg2(&call->data, DATA_XFER_LIMIT); 52 52 else 53 53 return ELIMIT; … … 61 61 assert(!answer->buffer); 62 62 63 if (! IPC_GET_RETVAL(&answer->data)) {63 if (!ipc_get_retval(&answer->data)) { 64 64 /* The recipient agreed to send data. */ 65 uintptr_t src = IPC_GET_ARG1(&answer->data);66 uintptr_t dst = IPC_GET_ARG1(olddata);67 size_t max_size = IPC_GET_ARG2(olddata);68 size_t size = IPC_GET_ARG2(&answer->data);65 uintptr_t src = ipc_get_arg1(&answer->data); 66 uintptr_t dst = ipc_get_arg1(olddata); 67 size_t max_size = ipc_get_arg2(olddata); 68 size_t size = ipc_get_arg2(&answer->data); 69 69 70 70 if (size && size <= max_size) { … … 73 73 * information is not lost. 74 74 */ 75 IPC_SET_ARG1(&answer->data, dst);75 ipc_set_arg1(&answer->data, dst); 76 76 77 77 answer->buffer = malloc(size); 78 78 if (!answer->buffer) { 79 IPC_SET_RETVAL(&answer->data, ENOMEM);79 ipc_set_retval(&answer->data, ENOMEM); 80 80 return EOK; 81 81 } … … 83 83 (void *) src, size); 84 84 if (rc) { 85 IPC_SET_RETVAL(&answer->data, rc);85 ipc_set_retval(&answer->data, rc); 86 86 /* 87 87 * answer->buffer will be cleaned up in … … 91 91 } 92 92 } else if (!size) { 93 IPC_SET_RETVAL(&answer->data, EOK);93 ipc_set_retval(&answer->data, EOK); 94 94 } else { 95 IPC_SET_RETVAL(&answer->data, ELIMIT);95 ipc_set_retval(&answer->data, ELIMIT); 96 96 } 97 97 } … … 103 103 { 104 104 if (answer->buffer) { 105 uintptr_t dst = IPC_GET_ARG1(&answer->data);106 size_t size = IPC_GET_ARG2(&answer->data);105 uintptr_t dst = ipc_get_arg1(&answer->data); 106 size_t size = ipc_get_arg2(&answer->data); 107 107 errno_t rc; 108 108 109 109 rc = copy_to_uspace((void *) dst, answer->buffer, size); 110 110 if (rc) 111 IPC_SET_RETVAL(&answer->data, rc);111 ipc_set_retval(&answer->data, rc); 112 112 } 113 113 -
kernel/generic/src/ipc/ops/datawrite.c
reb13ef8 rfafb8e5 43 43 static errno_t request_preprocess(call_t *call, phone_t *phone) 44 44 { 45 uintptr_t src = IPC_GET_ARG1(&call->data);46 size_t size = IPC_GET_ARG2(&call->data);45 uintptr_t src = ipc_get_arg1(&call->data); 46 size_t size = ipc_get_arg2(&call->data); 47 47 48 48 if (size > DATA_XFER_LIMIT) { 49 int flags = IPC_GET_ARG3(&call->data);49 int flags = ipc_get_arg3(&call->data); 50 50 51 51 if (flags & IPC_XF_RESTRICT) { 52 52 size = DATA_XFER_LIMIT; 53 IPC_SET_ARG2(&call->data, size);53 ipc_set_arg2(&call->data, size); 54 54 } else 55 55 return ELIMIT; … … 75 75 assert(answer->buffer); 76 76 77 if (! IPC_GET_RETVAL(&answer->data)) {77 if (!ipc_get_retval(&answer->data)) { 78 78 /* The recipient agreed to receive data. */ 79 uintptr_t dst = (uintptr_t) IPC_GET_ARG1(&answer->data);80 size_t size = (size_t) IPC_GET_ARG2(&answer->data);81 size_t max_size = (size_t) IPC_GET_ARG2(olddata);79 uintptr_t dst = (uintptr_t)ipc_get_arg1(&answer->data); 80 size_t size = (size_t)ipc_get_arg2(&answer->data); 81 size_t max_size = (size_t)ipc_get_arg2(olddata); 82 82 83 83 if (size <= max_size) { … … 85 85 answer->buffer, size); 86 86 if (rc) 87 IPC_SET_RETVAL(&answer->data, rc);87 ipc_set_retval(&answer->data, rc); 88 88 } else { 89 IPC_SET_RETVAL(&answer->data, ELIMIT);89 ipc_set_retval(&answer->data, ELIMIT); 90 90 } 91 91 } -
kernel/generic/src/ipc/ops/debug.c
reb13ef8 rfafb8e5 47 47 { 48 48 if (answer->buffer) { 49 uintptr_t dst = IPC_GET_ARG1(&answer->data);50 size_t size = IPC_GET_ARG2(&answer->data);49 uintptr_t dst = ipc_get_arg1(&answer->data); 50 size_t size = ipc_get_arg2(&answer->data); 51 51 errno_t rc; 52 52 53 53 rc = copy_to_uspace((void *) dst, answer->buffer, size); 54 54 if (rc) 55 IPC_SET_RETVAL(&answer->data, rc);55 ipc_set_retval(&answer->data, rc); 56 56 } 57 57 -
kernel/generic/src/ipc/ops/pagein.c
reb13ef8 rfafb8e5 68 68 return EOK; 69 69 70 if (! IPC_GET_RETVAL(&answer->data)) {70 if (!ipc_get_retval(&answer->data)) { 71 71 72 72 pte_t pte; … … 74 74 75 75 page_table_lock(AS, true); 76 bool found = page_mapping_find(AS, IPC_GET_ARG1(&answer->data),76 bool found = page_mapping_find(AS, ipc_get_arg1(&answer->data), 77 77 false, &pte); 78 78 if (found & PTE_PRESENT(&pte)) { … … 86 86 frame_reference_add(ADDR2PFN(frame)); 87 87 } 88 IPC_SET_ARG1(&answer->data, frame);88 ipc_set_arg1(&answer->data, frame); 89 89 } else { 90 IPC_SET_RETVAL(&answer->data, ENOENT);90 ipc_set_retval(&answer->data, ENOENT); 91 91 } 92 92 page_table_unlock(AS, true); -
kernel/generic/src/ipc/ops/sharein.c
reb13ef8 rfafb8e5 43 43 static errno_t answer_preprocess(call_t *answer, ipc_data_t *olddata) 44 44 { 45 if (! IPC_GET_RETVAL(&answer->data)) {45 if (!ipc_get_retval(&answer->data)) { 46 46 irq_spinlock_lock(&answer->sender->lock, true); 47 47 as_t *as = answer->sender->as; … … 49 49 50 50 uintptr_t dst_base = (uintptr_t) -1; 51 errno_t rc = as_area_share(AS, IPC_GET_ARG1(&answer->data),52 IPC_GET_ARG1(olddata), as, IPC_GET_ARG2(&answer->data),53 &dst_base, IPC_GET_ARG2(olddata));54 IPC_SET_ARG5(&answer->data, dst_base);55 IPC_SET_RETVAL(&answer->data, rc);51 errno_t rc = as_area_share(AS, ipc_get_arg1(&answer->data), 52 ipc_get_arg1(olddata), as, ipc_get_arg2(&answer->data), 53 &dst_base, ipc_get_arg2(olddata)); 54 ipc_set_arg5(&answer->data, dst_base); 55 ipc_set_retval(&answer->data, rc); 56 56 } 57 57 -
kernel/generic/src/ipc/ops/shareout.c
reb13ef8 rfafb8e5 44 44 static errno_t request_preprocess(call_t *call, phone_t *phone) 45 45 { 46 size_t size = as_area_get_size( IPC_GET_ARG1(&call->data));46 size_t size = as_area_get_size(ipc_get_arg1(&call->data)); 47 47 48 48 if (!size) 49 49 return EPERM; 50 IPC_SET_ARG2(&call->data, size);50 ipc_set_arg2(&call->data, size); 51 51 52 52 return EOK; … … 57 57 errno_t rc = EOK; 58 58 59 if (! IPC_GET_RETVAL(&answer->data)) {59 if (!ipc_get_retval(&answer->data)) { 60 60 /* Accepted, handle as_area receipt */ 61 61 … … 65 65 66 66 uintptr_t dst_base = (uintptr_t) -1; 67 rc = as_area_share(as, IPC_GET_ARG1(olddata),68 IPC_GET_ARG2(olddata), AS, IPC_GET_ARG3(olddata),69 &dst_base, IPC_GET_ARG1(&answer->data));67 rc = as_area_share(as, ipc_get_arg1(olddata), 68 ipc_get_arg2(olddata), AS, ipc_get_arg3(olddata), 69 &dst_base, ipc_get_arg1(&answer->data)); 70 70 71 71 if (rc == EOK) { 72 rc = copy_to_uspace((void *) IPC_GET_ARG2(&answer->data),72 rc = copy_to_uspace((void *) ipc_get_arg2(&answer->data), 73 73 &dst_base, sizeof(dst_base)); 74 74 } 75 75 76 IPC_SET_RETVAL(&answer->data, rc);76 ipc_set_retval(&answer->data, rc); 77 77 } 78 78 -
kernel/generic/src/ipc/ops/stchngath.c
reb13ef8 rfafb8e5 46 46 47 47 kobject_t *sender_obj = kobject_get(TASK, 48 (cap_handle_t) IPC_GET_ARG5(&call->data), KOBJECT_TYPE_PHONE);48 (cap_handle_t) ipc_get_arg5(&call->data), KOBJECT_TYPE_PHONE); 49 49 if (!sender_obj) 50 50 return ENOENT; … … 62 62 63 63 /* Remember the third party task hash. */ 64 IPC_SET_ARG5(&call->data, (sysarg_t) other_task_s);64 ipc_set_arg5(&call->data, (sysarg_t) other_task_s); 65 65 66 66 kobject_put(sender_obj); … … 72 72 errno_t rc = EOK; 73 73 74 if (! IPC_GET_RETVAL(&answer->data)) {74 if (!ipc_get_retval(&answer->data)) { 75 75 /* The recipient authorized the change of state. */ 76 76 task_t *other_task_s; … … 78 78 79 79 kobject_t *recipient_obj = kobject_get(TASK, 80 (cap_handle_t) IPC_GET_ARG1(&answer->data),80 (cap_handle_t) ipc_get_arg1(&answer->data), 81 81 KOBJECT_TYPE_PHONE); 82 82 if (!recipient_obj) { 83 IPC_SET_RETVAL(&answer->data, ENOENT);83 ipc_set_retval(&answer->data, ENOENT); 84 84 return ENOENT; 85 85 } … … 88 88 if (recipient_obj->phone->state != IPC_PHONE_CONNECTED) { 89 89 mutex_unlock(&recipient_obj->phone->lock); 90 IPC_SET_RETVAL(&answer->data, EINVAL);90 ipc_set_retval(&answer->data, EINVAL); 91 91 kobject_put(recipient_obj); 92 92 return EINVAL; … … 94 94 95 95 other_task_r = recipient_obj->phone->callee->task; 96 other_task_s = (task_t *) IPC_GET_ARG5(olddata);96 other_task_s = (task_t *) ipc_get_arg5(olddata); 97 97 98 98 /* … … 101 101 */ 102 102 if (other_task_r != other_task_s) { 103 IPC_SET_RETVAL(&answer->data, EINVAL);103 ipc_set_retval(&answer->data, EINVAL); 104 104 rc = EINVAL; 105 105 } else { 106 106 rc = event_task_notify_5(other_task_r, 107 107 EVENT_TASK_STATE_CHANGE, false, 108 IPC_GET_ARG1(olddata),109 IPC_GET_ARG2(olddata),110 IPC_GET_ARG3(olddata),108 ipc_get_arg1(olddata), 109 ipc_get_arg2(olddata), 110 ipc_get_arg3(olddata), 111 111 LOWER32(olddata->task_id), 112 112 UPPER32(olddata->task_id)); 113 IPC_SET_RETVAL(&answer->data, rc);113 ipc_set_retval(&answer->data, rc); 114 114 } 115 115
Note:
See TracChangeset
for help on using the changeset viewer.
