Changeset eb13ef8 in mainline for kernel/generic/src/ipc/ops/dataread.c
- Timestamp:
- 2019-02-06T13:25:12Z (5 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- fafb8e5
- Parents:
- bb97118
- git-author:
- Jiří Zárevúcky <zarevucky.jiri@…> (2019-02-02 14:04:02)
- git-committer:
- Jiří Zárevúcky <zarevucky.jiri@…> (2019-02-06 13:25:12)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/generic/src/ipc/ops/dataread.c
rbb97118 reb13ef8 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
Note:
See TracChangeset
for help on using the changeset viewer.